Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
88fea4f898 | ||
|
|
fdfaa63fc0 | ||
|
|
6dcfaa3304 | ||
|
|
af7b3ab7d7 | ||
|
|
9b3a31068f | ||
|
|
d68f386698 | ||
|
|
644287173f | ||
|
|
555231828b | ||
|
|
972c651fe5 | ||
|
|
0848613088 | ||
|
|
fcc16d93e1 | ||
|
|
d0b0a24819 | ||
|
|
e5894e7291 | ||
|
|
c3cc0b4286 | ||
|
|
3372a0e8fa | ||
|
|
352a09b3e2 | ||
|
|
e5911db645 | ||
|
|
627578782e | ||
|
|
7902358abd | ||
|
|
1a0366b2a1 | ||
|
|
a8b747323e | ||
|
|
ea18023a91 | ||
|
|
5cbb044637 | ||
|
|
ffed2f814f | ||
|
|
51eccd0abf | ||
|
|
44d7cf3b59 | ||
|
|
9ffdd62b8d | ||
|
|
1991a9d6ee | ||
|
|
dc130bdf6b | ||
|
|
a95b16cb71 | ||
|
|
1214db95dc | ||
|
|
0ab9d5fa7e | ||
|
|
d2989b3f90 | ||
|
|
91a8a79cc8 | ||
|
|
cc4b8eb42c | ||
|
|
ddf6094c62 | ||
|
|
5bce5a7e33 | ||
|
|
2f601de852 | ||
|
|
bde14ad82b | ||
|
|
970c566046 | ||
|
|
d7c5e540a4 | ||
|
|
86b5688eae | ||
|
|
341b1cde9d | ||
|
|
e27e0fa8cf | ||
|
|
e0c7f92288 | ||
|
|
9cf2ca008c | ||
|
|
1265e80d15 | ||
|
|
56a5e906f3 | ||
|
|
154ea37acd | ||
|
|
0d83236666 | ||
|
|
5bf8181815 | ||
|
|
b6958ac963 | ||
|
|
8187bbaa13 | ||
|
|
5d2c85cb14 | ||
|
|
71b52fc82b | ||
|
|
6cc81886c0 | ||
|
|
0671598943 | ||
|
|
8886fb7b61 |
@@ -0,0 +1,3 @@
|
|||||||
|
github: dayanch96
|
||||||
|
ko_fi: dayanch96
|
||||||
|
buy_me_a_coffee: dayanch96
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
name: Bug report
|
||||||
|
description: This issue template is designed to help you report problems and suggest improvements for our project.
|
||||||
|
labels: bug
|
||||||
|
body:
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Describe the bug
|
||||||
|
description: Describe the issue in detail here, including any relevant context or background information. Be clear and concise.
|
||||||
|
placeholder: |
|
||||||
|
Enter your description here
|
||||||
|
render: yaml
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce
|
||||||
|
description: |
|
||||||
|
Steps to reproduce the behavior (bug)
|
||||||
|
placeholder: |
|
||||||
|
Example:
|
||||||
|
1. Go to Main tab
|
||||||
|
2. Tap to the video
|
||||||
|
3. See error
|
||||||
|
render: yaml
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Crashlog
|
||||||
|
description: |
|
||||||
|
**Do not put text from crashlog, include zipped Crashlog_File.ips instead**
|
||||||
|
|
||||||
|
**To find and attach your crashlog:**
|
||||||
|
1. Open the Analytics & Improvements section of Settings on the device.
|
||||||
|
2. Tap Analytics Data.
|
||||||
|
3. Locate the log for your app. The log name starts with YouTubeMusic_(DateTime).
|
||||||
|
4. Select the desired log.
|
||||||
|
5. Tap the Share icon, save it in the Files app, then zip saved file.
|
||||||
|
placeholder: |
|
||||||
|
Drag and drop your Crashlog.zip here.
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Post Requisites
|
||||||
|
description: |
|
||||||
|
**IMPORTANT:** Read carefully before checking the box.
|
||||||
|
options:
|
||||||
|
- label: I have checked that a similar issue has not been reported before.
|
||||||
|
required: true
|
||||||
|
- label: Verified the relevance of the project and the version you are using.
|
||||||
|
required: true
|
||||||
|
- label: Provided a detailed description of the problem and have filled in all required fields.
|
||||||
|
required: true
|
||||||
|
- label: I did not answer truthfully to **ALL** the above checkboxes.
|
||||||
|
required: false
|
||||||
|
- label: By submitting this issue, **I confirm that I have filled in all the necessary fields and complied with the guidelines. Failure to comply may result in the issue being closed without discussion, and repeated violations may lead to restrict account from further participation.**
|
||||||
|
required: true
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
name: Feature request
|
||||||
|
description: This template is designed to help you suggest improvements or new features for our project.
|
||||||
|
labels: enhancement
|
||||||
|
body:
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Describe the feature request
|
||||||
|
description: Describe the feature or enhancement in detail here. Include any relevant context or background information. Be clear and concise.
|
||||||
|
placeholder: |
|
||||||
|
Enter your description here
|
||||||
|
render: yaml
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Post Requisites
|
||||||
|
description: |
|
||||||
|
**IMPORTANT:** Read carefully before checking the box.
|
||||||
|
options:
|
||||||
|
- label: I have checked that a similar feature request has not been reported before.
|
||||||
|
required: true
|
||||||
|
- label: Verified the relevance of the project and the version you are using.
|
||||||
|
required: true
|
||||||
|
- label: Provided a detailed description of the request and have filled in all required fields.
|
||||||
|
required: true
|
||||||
|
- label: I did not answer truthfully to **ALL** the above checkboxes.
|
||||||
|
required: false
|
||||||
|
- label: By submitting this request, **I confirm that I have filled in all the necessary fields and complied with the guidelines. Failure to comply may result in the request being closed without discussion, and repeated violations may lead to restrict account from further participation.**
|
||||||
|
required: true
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2023 dayanch96
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
@@ -5,14 +5,14 @@ endif
|
|||||||
DEBUG=0
|
DEBUG=0
|
||||||
FINALPACKAGE=1
|
FINALPACKAGE=1
|
||||||
ARCHS = arm64
|
ARCHS = arm64
|
||||||
PACKAGE_VERSION = 2.6.3
|
PACKAGE_VERSION = 3.0.1
|
||||||
TARGET := iphone:clang:latest:13.0
|
TARGET := iphone:clang:latest:13.0
|
||||||
|
|
||||||
include $(THEOS)/makefiles/common.mk
|
include $(THEOS)/makefiles/common.mk
|
||||||
|
|
||||||
TWEAK_NAME = YTLite
|
TWEAK_NAME = YTLite
|
||||||
$(TWEAK_NAME)_FRAMEWORKS = UIKit Foundation
|
$(TWEAK_NAME)_FRAMEWORKS = UIKit Foundation SystemConfiguration
|
||||||
$(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=$(PACKAGE_VERSION)
|
$(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=$(PACKAGE_VERSION)
|
||||||
$(TWEAK_NAME)_FILES = YTLite.x Settings.x Sideloading.x
|
$(TWEAK_NAME)_FILES = $(wildcard *.x Utils/*.m)
|
||||||
|
|
||||||
include $(THEOS_MAKE_PATH)/tweak.mk
|
include $(THEOS_MAKE_PATH)/tweak.mk
|
||||||
|
|||||||
@@ -4,7 +4,11 @@ Lightweight YouTube Enhancer
|
|||||||
Advanced mode can be activated inside **Version cell**. Then simply reopen YTLite settings
|
Advanced mode can be activated inside **Version cell**. Then simply reopen YTLite settings
|
||||||
|
|
||||||
# How to build it yourself
|
# How to build it yourself
|
||||||
Clone this repo and __[YouTubeHeader by PoomSmart](https://github.com/PoomSmart/YouTubeHeader/)__
|
Clone this repo
|
||||||
|
|
||||||
|
Clone __[YouTubeHeader by PoomSmart](https://github.com/PoomSmart/YouTubeHeader/)__
|
||||||
|
|
||||||
|
Clone __[protobuf by Protocol Buffers](https://github.com/protocolbuffers/protobuf)__
|
||||||
|
|
||||||
cd YTLite folder and run
|
cd YTLite folder and run
|
||||||
|
|
||||||
|
|||||||
+481
-354
@@ -41,63 +41,72 @@ static NSString *GetCacheSize() {
|
|||||||
}
|
}
|
||||||
%end
|
%end
|
||||||
|
|
||||||
|
%hook YTSettingsCell
|
||||||
|
- (void)layoutSubviews {
|
||||||
|
%orig;
|
||||||
|
|
||||||
|
BOOL isYTLite = [self.accessibilityIdentifier isEqualToString:@"YTLiteSectionItem"];
|
||||||
|
YTTouchFeedbackController *feedback = [self valueForKey:@"_touchFeedbackController"];
|
||||||
|
ABCSwitch *abcSwitch = [self valueForKey:@"_switch"];
|
||||||
|
|
||||||
|
if (isYTLite) {
|
||||||
|
feedback.feedbackColor = [UIColor colorWithRed:0.75 green:0.50 blue:0.90 alpha:1.0];
|
||||||
|
abcSwitch.onTintColor = [UIColor colorWithRed:0.75 green:0.50 blue:0.90 alpha:1.0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%end
|
||||||
|
|
||||||
%hook YTSettingsSectionItemManager
|
%hook YTSettingsSectionItemManager
|
||||||
%new
|
%new
|
||||||
- (void)updatePrefsForKey:(NSString *)key enabled:(BOOL)enabled {
|
- (YTSettingsSectionItem *)switchWithTitle:(NSString *)title key:(NSString *)key {
|
||||||
NSString *prefsPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"YTLite.plist"];
|
Class YTSettingsSectionItemClass = %c(YTSettingsSectionItem);
|
||||||
NSMutableDictionary *prefs = [NSMutableDictionary dictionaryWithContentsOfFile:prefsPath];
|
Class YTAlertViewClass = %c(YTAlertView);
|
||||||
|
NSString *titleDesc = [NSString stringWithFormat:@"%@Desc", title];
|
||||||
|
|
||||||
if (!prefs) prefs = [NSMutableDictionary dictionary];
|
YTSettingsSectionItem *item = [YTSettingsSectionItemClass switchItemWithTitle:LOC(title)
|
||||||
|
titleDescription:LOC(titleDesc)
|
||||||
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
|
switchOn:ytlBool(key)
|
||||||
|
switchBlock:^BOOL(YTSettingsCell *cell, BOOL enabled) {
|
||||||
|
if ([key isEqualToString:@"shortsOnlyMode"]) {
|
||||||
|
YTAlertView *alertView = [YTAlertViewClass confirmationDialogWithAction:^{
|
||||||
|
ytlSetBool(enabled, @"shortsOnlyMode");
|
||||||
|
}
|
||||||
|
actionTitle:LOC(@"Yes")
|
||||||
|
cancelAction:^{
|
||||||
|
[cell setSwitchOn:!enabled animated:YES];
|
||||||
|
}
|
||||||
|
cancelTitle:LOC(@"No")];
|
||||||
|
alertView.title = LOC(@"Warning");
|
||||||
|
alertView.subtitle = LOC(@"ShortsOnlyWarning");
|
||||||
|
[alertView show];
|
||||||
|
}
|
||||||
|
|
||||||
[prefs setObject:@(enabled) forKey:key];
|
else {
|
||||||
[prefs writeToFile:prefsPath atomically:NO];
|
ytlSetBool(enabled, key);
|
||||||
|
|
||||||
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("com.dvntm.ytlite.prefschanged"), NULL, NULL, YES);
|
NSArray *keys = @[@"removeLabels", @"removeIndicators", @"reExplore", @"addExplore", @"removeShorts", @"removeSubscriptions", @"removeUploads", @"removeLibrary"];
|
||||||
|
if ([keys containsObject:key]) {
|
||||||
|
[[[%c(YTHeaderContentComboViewController) alloc] init] refreshPivotBar];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
settingItemId:0];
|
||||||
|
|
||||||
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
%new
|
%new
|
||||||
- (void)updateIntegerPrefsForKey:(NSString *)key intValue:(NSInteger)intValue {
|
- (YTSettingsSectionItem *)linkWithTitle:(NSString *)title description:(NSString *)description link:(NSString *)link {
|
||||||
NSString *prefsPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"YTLite.plist"];
|
return [%c(YTSettingsSectionItem) itemWithTitle:title
|
||||||
NSMutableDictionary *prefs = [NSMutableDictionary dictionaryWithContentsOfFile:prefsPath];
|
titleDescription:description
|
||||||
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
if (!prefs) prefs = [NSMutableDictionary dictionary];
|
detailTextBlock:nil
|
||||||
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
[prefs setObject:@(intValue) forKey:key];
|
return [%c(YTUIUtils) openURL:[NSURL URLWithString:link]];
|
||||||
[prefs writeToFile:prefsPath atomically:NO];
|
}];
|
||||||
|
|
||||||
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("com.dvntm.ytlite.prefschanged"), NULL, NULL, YES);
|
|
||||||
}
|
|
||||||
|
|
||||||
static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleDescription, NSString *key, BOOL *value, id selfObject) {
|
|
||||||
Class YTSettingsSectionItemClass = %c(YTSettingsSectionItem);
|
|
||||||
Class YTAlertViewClass = %c(YTAlertView);
|
|
||||||
YTSettingsSectionItem *item = [YTSettingsSectionItemClass switchItemWithTitle:title
|
|
||||||
titleDescription:titleDescription
|
|
||||||
accessibilityIdentifier:nil
|
|
||||||
switchOn:*value
|
|
||||||
switchBlock:^BOOL(YTSettingsCell *cell, BOOL enabled) {
|
|
||||||
if ([key isEqualToString:@"shortsOnlyMode"]) {
|
|
||||||
YTAlertView *alertView = [YTAlertViewClass confirmationDialogWithAction:^{
|
|
||||||
[selfObject updatePrefsForKey:@"shortsOnlyMode" enabled:enabled];
|
|
||||||
}
|
|
||||||
actionTitle:LOC(@"Yes")
|
|
||||||
cancelAction:^{
|
|
||||||
[cell setSwitchOn:!enabled animated:YES];
|
|
||||||
}
|
|
||||||
cancelTitle:LOC(@"No")];
|
|
||||||
alertView.title = LOC(@"Warning");
|
|
||||||
alertView.subtitle = LOC(@"ShortsOnlyWarning");
|
|
||||||
[alertView show];
|
|
||||||
}
|
|
||||||
|
|
||||||
else {
|
|
||||||
[selfObject updatePrefsForKey:key enabled:enabled];
|
|
||||||
}
|
|
||||||
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
settingItemId:0];
|
|
||||||
return item;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
%new(v@:@)
|
%new(v@:@)
|
||||||
@@ -105,387 +114,510 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
|||||||
NSMutableArray *sectionItems = [NSMutableArray array];
|
NSMutableArray *sectionItems = [NSMutableArray array];
|
||||||
Class YTSettingsSectionItemClass = %c(YTSettingsSectionItem);
|
Class YTSettingsSectionItemClass = %c(YTSettingsSectionItem);
|
||||||
YTSettingsViewController *settingsViewController = [self valueForKey:@"_settingsViewControllerDelegate"];
|
YTSettingsViewController *settingsViewController = [self valueForKey:@"_settingsViewControllerDelegate"];
|
||||||
id selfObject = self;
|
|
||||||
|
|
||||||
YTSettingsSectionItem *space = [%c(YTSettingsSectionItem) itemWithTitle:nil accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { return YES; }];
|
YTSettingsSectionItem *space = [%c(YTSettingsSectionItem) itemWithTitle:nil accessibilityIdentifier:@"YTLiteSectionItem" detailTextBlock:nil selectBlock:nil];
|
||||||
|
|
||||||
YTSettingsSectionItem *general = [YTSettingsSectionItemClass itemWithTitle:LOC(@"General")
|
YTSettingsSectionItem *general = [YTSettingsSectionItemClass itemWithTitle:LOC(@"General")
|
||||||
accessibilityIdentifier:nil
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
detailTextBlock:^NSString *() {
|
detailTextBlock:^NSString *() {
|
||||||
return @"‣";
|
return @"‣";
|
||||||
}
|
}
|
||||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||||
createSwitchItem(LOC(@"RemoveAds"), LOC(@"RemoveAdsDesc"), @"noAds", &kNoAds, selfObject),
|
[self switchWithTitle:@"RemoveAds" key:@"noAds"],
|
||||||
createSwitchItem(LOC(@"BackgroundPlayback"), LOC(@"BackgroundPlaybackDesc"), @"backgroundPlayback", &kBackgroundPlayback, selfObject)
|
[self switchWithTitle:@"BackgroundPlayback" key:@"backgroundPlayback"]
|
||||||
];
|
];
|
||||||
|
|
||||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"General") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"General") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||||
[settingsViewController pushViewController:picker];
|
[settingsViewController pushViewController:picker];
|
||||||
return YES;
|
return YES;
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[sectionItems addObject:general];
|
[sectionItems addObject:general];
|
||||||
|
|
||||||
YTSettingsSectionItem *navbar = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Navbar")
|
YTSettingsSectionItem *navbar = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Navbar")
|
||||||
accessibilityIdentifier:nil
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
detailTextBlock:^NSString *() {
|
detailTextBlock:^NSString *() {
|
||||||
return @"‣";
|
return @"‣";
|
||||||
}
|
}
|
||||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||||
createSwitchItem(LOC(@"RemoveCast"), LOC(@"RemoveCastDesc"), @"noCast", &kNoCast, selfObject),
|
[self switchWithTitle:@"RemoveCast" key:@"noCast"],
|
||||||
createSwitchItem(LOC(@"RemoveNotifications"), LOC(@"RemoveNotificationsDesc"), @"removeNotifsButton", &kNoNotifsButton, selfObject),
|
[self switchWithTitle:@"RemoveNotifications" key:@"noNotifsButton"],
|
||||||
createSwitchItem(LOC(@"RemoveSearch"), LOC(@"RemoveSearchDesc"), @"removeSearchButton", &kNoSearchButton, selfObject),
|
[self switchWithTitle:@"RemoveSearch" key:@"noSearchButton"],
|
||||||
createSwitchItem(LOC(@"RemoveVoiceSearch"), LOC(@"RemoveVoiceSearchDesc"), @"removeVoiceSearchButton", &kNoVoiceSearchButton, selfObject)
|
[self switchWithTitle:@"RemoveVoiceSearch" key:@"noVoiceSearchButton"]
|
||||||
];
|
];
|
||||||
|
|
||||||
if (kAdvancedMode) {
|
if (ytlBool(@"advancedMode")) {
|
||||||
YTSettingsSectionItem *addStickyNavbar = createSwitchItem(LOC(@"StickyNavbar"), LOC(@"StickyNavbarDesc"), @"stickyNavbar", &kStickyNavbar, selfObject);
|
rows = [rows arrayByAddingObjectsFromArray:@[
|
||||||
rows = [rows arrayByAddingObject:addStickyNavbar];
|
[self switchWithTitle:@"StickyNavbar" key:@"stickyNavbar"],
|
||||||
|
[self switchWithTitle:@"NoSubbar" key:@"noSubbar"],
|
||||||
YTSettingsSectionItem *addNoSubbar = createSwitchItem(LOC(@"NoSubbar"), LOC(@"NoSubbarDesc"), @"noSubbar", &kNoSubbar, selfObject);
|
[self switchWithTitle:@"NoYTLogo" key:@"noYTLogo"],
|
||||||
rows = [rows arrayByAddingObject:addNoSubbar];
|
[self switchWithTitle:@"PremiumYTLogo" key:@"premiumYTLogo"]
|
||||||
|
]];
|
||||||
YTSettingsSectionItem *addNoYTLogo = createSwitchItem(LOC(@"NoYTLogo"), LOC(@"NoYTLogoDesc"), @"noYTLogo", &kNoYTLogo, selfObject);
|
|
||||||
rows = [rows arrayByAddingObject:addNoYTLogo];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Navbar") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Navbar") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||||
[settingsViewController pushViewController:picker];
|
[settingsViewController pushViewController:picker];
|
||||||
return YES;
|
return YES;
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[sectionItems addObject:navbar];
|
[sectionItems addObject:navbar];
|
||||||
|
|
||||||
if (kAdvancedMode) {
|
if (ytlBool(@"advancedMode")) {
|
||||||
YTSettingsSectionItem *overlay = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Overlay")
|
YTSettingsSectionItem *overlay = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Overlay")
|
||||||
accessibilityIdentifier:nil
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
detailTextBlock:^NSString *() {
|
detailTextBlock:^NSString *() {
|
||||||
return @"‣";
|
return @"‣";
|
||||||
}
|
}
|
||||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||||
createSwitchItem(LOC(@"HideAutoplay"), LOC(@"HideAutoplayDesc"), @"hideAutoplay", &kHideAutoplay, selfObject),
|
[self switchWithTitle:@"HideAutoplay" key:@"hideAutoplay"],
|
||||||
createSwitchItem(LOC(@"HideSubs"), LOC(@"HideSubsDesc"), @"hideSubs", &kHideSubs, selfObject),
|
[self switchWithTitle:@"HideSubs" key:@"hideSubs"],
|
||||||
createSwitchItem(LOC(@"NoHUDMsgs"), LOC(@"NoHUDMsgsDesc"), @"noHUDMsgs", &kNoHUDMsgs, selfObject),
|
[self switchWithTitle:@"NoHUDMsgs" key:@"noHUDMsgs"],
|
||||||
createSwitchItem(LOC(@"HidePrevNext"), LOC(@"HidePrevNextDesc"), @"hidePrevNext", &kHidePrevNext, selfObject),
|
[self switchWithTitle:@"HidePrevNext" key:@"hidePrevNext"],
|
||||||
createSwitchItem(LOC(@"ReplacePrevNext"), LOC(@"ReplacePrevNextDesc"), @"replacePrevNext", &kReplacePrevNext, selfObject),
|
[self switchWithTitle:@"ReplacePrevNext" key:@"replacePrevNext"],
|
||||||
createSwitchItem(LOC(@"NoDarkBg"), LOC(@"NoDarkBgDesc"), @"noDarkBg", &kNoDarkBg, selfObject),
|
[self switchWithTitle:@"NoDarkBg" key:@"noDarkBg"],
|
||||||
createSwitchItem(LOC(@"NoEndScreenCards"), LOC(@"NoEndScreenCardsDesc"), @"endScreenCards", &kEndScreenCards, selfObject),
|
[self switchWithTitle:@"NoEndScreenCards" key:@"endScreenCards"],
|
||||||
createSwitchItem(LOC(@"NoFullscreenActions"), LOC(@"NoFullscreenActionsDesc"), @"noFullscreenActions", &kNoFullscreenActions, selfObject),
|
[self switchWithTitle:@"NoFullscreenActions" key:@"noFullscreenActions"],
|
||||||
createSwitchItem(LOC(@"PersistentProgressBar"), LOC(@"PersistentProgressBarDesc"), @"persistentProgressBar", &kPersistentProgressBar, selfObject),
|
[self switchWithTitle:@"PersistentProgressBar" key:@"persistentProgressBar"],
|
||||||
createSwitchItem(LOC(@"NoRelatedVids"), LOC(@"NoRelatedVidsDesc"), @"noRelatedVids", &kNoRelatedVids, selfObject),
|
[self switchWithTitle:@"StockVolumeHUD" key:@"stockVolumeHUD"],
|
||||||
createSwitchItem(LOC(@"NoPromotionCards"), LOC(@"NoPromotionCardsDesc"), @"noPromotionCards", &kNoPromotionCards, selfObject),
|
[self switchWithTitle:@"NoRelatedVids" key:@"noRelatedVids"],
|
||||||
createSwitchItem(LOC(@"NoWatermarks"), LOC(@"NoWatermarksDesc"), @"noWatermarks", &kNoWatermarks, selfObject)
|
[self switchWithTitle:@"NoPromotionCards" key:@"noPromotionCards"],
|
||||||
|
[self switchWithTitle:@"NoWatermarks" key:@"noWatermarks"],
|
||||||
|
[self switchWithTitle:@"VideoEndTime" key:@"videoEndTime"],
|
||||||
|
[self switchWithTitle:@"24hrFormat" key:@"24hrFormat"]
|
||||||
];
|
];
|
||||||
|
|
||||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Overlay") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Overlay") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||||
[settingsViewController pushViewController:picker];
|
[settingsViewController pushViewController:picker];
|
||||||
return YES;
|
return YES;
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[sectionItems addObject:overlay];
|
[sectionItems addObject:overlay];
|
||||||
|
|
||||||
YTSettingsSectionItem *player = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Player")
|
YTSettingsSectionItem *player = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Player")
|
||||||
accessibilityIdentifier:nil
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
detailTextBlock:^NSString *() {
|
detailTextBlock:^NSString *() {
|
||||||
return @"‣";
|
return @"‣";
|
||||||
}
|
}
|
||||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||||
createSwitchItem(LOC(@"Miniplayer"), LOC(@"MiniplayerDesc"), @"miniplayer", &kMiniplayer, selfObject),
|
[self switchWithTitle:@"Miniplayer" key:@"miniplayer"],
|
||||||
createSwitchItem(LOC(@"PortraitFullscreen"), LOC(@"PortraitFullscreenDesc"), @"portraitFullscreen", &kPortraitFullscreen, selfObject),
|
[self switchWithTitle:@"PortraitFullscreen" key:@"portraitFullscreen"],
|
||||||
createSwitchItem(LOC(@"CopyWithTimestamp"), LOC(@"CopyWithTimestampDesc"), @"copyWithTimestamp", &kCopyWithTimestamp, selfObject),
|
[self switchWithTitle:@"CopyWithTimestamp" key:@"copyWithTimestamp"],
|
||||||
createSwitchItem(LOC(@"DisableAutoplay"), LOC(@"DisableAutoplayDesc"), @"disableAutoplay", &kDisableAutoplay, selfObject),
|
[self switchWithTitle:@"DisableAutoplay" key:@"disableAutoplay"],
|
||||||
createSwitchItem(LOC(@"DisableAutoCaptions"), LOC(@"DisableAutoCaptionsDesc"), @"disableAutoCaptions", &kDisableAutoCaptions, selfObject),
|
[self switchWithTitle:@"DisableAutoCaptions" key:@"disableAutoCaptions"],
|
||||||
createSwitchItem(LOC(@"NoContentWarning"), LOC(@"NoContentWarningDesc"), @"noContentWarning", &kNoContentWarning, selfObject),
|
[self switchWithTitle:@"NoContentWarning" key:@"noContentWarning"],
|
||||||
createSwitchItem(LOC(@"ClassicQuality"), LOC(@"ClassicQualityDesc"), @"classicQuality", &kClassicQuality, selfObject),
|
[self switchWithTitle:@"ClassicQuality" key:@"classicQuality"],
|
||||||
createSwitchItem(LOC(@"ExtraSpeedOptions"), LOC(@"ExtraSpeedOptionsDesc"), @"extraSpeedOptions", &kExtraSpeedOptions, selfObject),
|
[self switchWithTitle:@"ExtraSpeedOptions" key:@"extraSpeedOptions"],
|
||||||
createSwitchItem(LOC(@"DontSnap2Chapter"), LOC(@"DontSnap2ChapterDesc"), @"dontSnapToChapter", &kDontSnapToChapter, selfObject),
|
[self switchWithTitle:@"DontSnap2Chapter" key:@"dontSnapToChapter"],
|
||||||
createSwitchItem(LOC(@"RedProgressBar"), LOC(@"RedProgressBarDesc"), @"redProgressBar", &kRedProgressBar, selfObject),
|
[self switchWithTitle:@"NoTwoFingerSnapToChapter" key:@"noTwoFingerSnapToChapter"],
|
||||||
createSwitchItem(LOC(@"NoHints"), LOC(@"NoHintsDesc"), @"noHints", &kNoHints, selfObject),
|
[self switchWithTitle:@"PauseOnOverlay" key:@"pauseOnOverlay"],
|
||||||
createSwitchItem(LOC(@"NoFreeZoom"), LOC(@"NoFreeZoomDesc"), @"noFreeZoom", &kNoFreeZoom, selfObject),
|
[self switchWithTitle:@"RedProgressBar" key:@"redProgressBar"],
|
||||||
createSwitchItem(LOC(@"AutoFullscreen"), LOC(@"AutoFullscreenDesc"), @"autoFullscreen", &kAutoFullscreen, selfObject),
|
[self switchWithTitle:@"NoPlayerRemixButton" key:@"noPlayerRemixButton"],
|
||||||
createSwitchItem(LOC(@"ExitFullscreen"), LOC(@"ExitFullscreenDesc"), @"exitFullscreen", &kExitFullscreen, selfObject),
|
[self switchWithTitle:@"NoPlayerClipButton" key:@"noPlayerClipButton"],
|
||||||
createSwitchItem(LOC(@"NoDoubleTap2Seek"), LOC(@"NoDoubleTap2SeekDesc"), @"noDoubleTapToSeek", &kNoDoubleTapToSeek, selfObject)
|
[self switchWithTitle:@"NoPlayerDownloadButton" key:@"noPlayerDownloadButton"],
|
||||||
|
[self switchWithTitle:@"NoHints" key:@"noHints"],
|
||||||
|
[self switchWithTitle:@"NoFreeZoom" key:@"noFreeZoom"],
|
||||||
|
[self switchWithTitle:@"AutoFullscreen" key:@"autoFullscreen"],
|
||||||
|
[self switchWithTitle:@"ExitFullscreen" key:@"exitFullscreen"],
|
||||||
|
[self switchWithTitle:@"NoDoubleTap2Seek" key:@"noDoubleTapToSeek"]
|
||||||
];
|
];
|
||||||
|
|
||||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Player") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Player") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||||
[settingsViewController pushViewController:picker];
|
[settingsViewController pushViewController:picker];
|
||||||
return YES;
|
return YES;
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[sectionItems addObject:player];
|
[sectionItems addObject:player];
|
||||||
|
|
||||||
YTSettingsSectionItem *shorts = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Shorts")
|
YTSettingsSectionItem *shorts = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Shorts")
|
||||||
accessibilityIdentifier:nil
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
detailTextBlock:^NSString *() {
|
|
||||||
return @"‣";
|
|
||||||
}
|
|
||||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
|
||||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
|
||||||
createSwitchItem(LOC(@"ShortsOnlyMode"), LOC(@"ShortsOnlyModeDesc"), @"shortsOnlyMode", &kShortsOnlyMode, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShorts"), LOC(@"HideShortsDesc"), @"hideShorts", &kHideShorts, selfObject),
|
|
||||||
createSwitchItem(LOC(@"ShortsProgress"), LOC(@"ShortsProgressDesc"), @"shortsProgress", &kShortsProgress, selfObject),
|
|
||||||
createSwitchItem(LOC(@"PinchToFullscreenShorts"), LOC(@"PinchToFullscreenShortsDesc"), @"pinchToFullscreenShorts", &kPinchToFullscreenShorts, selfObject),
|
|
||||||
createSwitchItem(LOC(@"ShortsToRegular"), LOC(@"ShortsToRegularDesc"), @"shortsToRegular", &kShortsToRegular, selfObject),
|
|
||||||
createSwitchItem(LOC(@"ResumeShorts"), LOC(@"ResumeShortsDesc"), @"resumeShorts", &kResumeShorts, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsLogo"), LOC(@"HideShortsLogoDesc"), @"hideShortsLogo", &kHideShortsLogo, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsSearch"), LOC(@"HideShortsSearchDesc"), @"hideShortsSearch", &kHideShortsSearch, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsCamera"), LOC(@"HideShortsCameraDesc"), @"hideShortsCamera", &kHideShortsCamera, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsMore"), LOC(@"HideShortsMoreDesc"), @"hideShortsMore", &kHideShortsMore, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsSubscriptions"), LOC(@"HideShortsSubscriptionsDesc"), @"hideShortsSubscriptions", &kHideShortsSubscriptions, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsLike"), LOC(@"HideShortsLikeDesc"), @"hideShortsLike", &kHideShortsLike, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsDislike"), LOC(@"HideShortsDislikeDesc"), @"hideShortsDislike", &kHideShortsDislike, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsComments"), LOC(@"HideShortsCommentsDesc"), @"hideShortsComments", &kHideShortsComments, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsRemix"), LOC(@"HideShortsRemixDesc"), @"hideShortsRemix", &kHideShortsRemix, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsShare"), LOC(@"HideShortsShareDesc"), @"hideShortsShare", &kHideShortsShare, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsAvatars"), LOC(@"HideShortsAvatarsDesc"), @"hideShortsAvatars", &kHideShortsAvatars, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsThanks"), LOC(@"HideShortsThanksDesc"), @"hideShortsThanks", &kHideShortsThanks, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsSource"), LOC(@"HideShortsSourceDesc"), @"hideShortsSource", &kHideShortsSource, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsChannelName"), LOC(@"HideShortsChannelNameDesc"), @"hideShortsChannelName", &kHideShortsChannelName, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsDescription"), LOC(@"HideShortsDescriptionDesc"), @"hideShortsDescription", &kHideShortsDescription, selfObject),
|
|
||||||
createSwitchItem(LOC(@"HideShortsAudioTrack"), LOC(@"HideShortsAudioTrackDesc"), @"hideShortsAudioTrack", &kHideShortsAudioTrack, selfObject),
|
|
||||||
createSwitchItem(LOC(@"NoPromotionCards"), LOC(@"NoPromotionCardsDesc"), @"hideShortsPromoCards", &kHideShortsPromoCards, selfObject)
|
|
||||||
];
|
|
||||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Shorts") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
|
||||||
[settingsViewController pushViewController:picker];
|
|
||||||
return YES;
|
|
||||||
}];
|
|
||||||
[sectionItems addObject:shorts];
|
|
||||||
}
|
|
||||||
|
|
||||||
YTSettingsSectionItem *tabbar = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Tabbar")
|
|
||||||
accessibilityIdentifier:nil
|
|
||||||
detailTextBlock:^NSString *() {
|
detailTextBlock:^NSString *() {
|
||||||
return @"‣";
|
return @"‣";
|
||||||
}
|
}
|
||||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||||
createSwitchItem(LOC(@"RemoveLabels"), LOC(@"RemoveLabelsDesc"), @"removeLabels", &kRemoveLabels, selfObject),
|
[self switchWithTitle:@"ShortsOnlyMode" key:@"shortsOnlyMode"],
|
||||||
createSwitchItem(LOC(@"RemoveIndicators"), LOC(@"RemoveIndicatorsDesc"), @"removeIndicators", &kRemoveIndicators, selfObject),
|
[self switchWithTitle:@"AutoSkipShorts" key:@"autoSkipShorts"],
|
||||||
createSwitchItem(LOC(@"ReExplore"), LOC(@"ReExploreDesc"), @"reExplore", &kReExplore, selfObject),
|
[self switchWithTitle:@"HideShorts" key:@"hideShorts"],
|
||||||
createSwitchItem(LOC(@"AddExplore"), LOC(@"AddExploreDesc"), @"addExplore", &kAddExplore, selfObject),
|
[self switchWithTitle:@"ShortsProgress" key:@"shortsProgress"],
|
||||||
createSwitchItem(LOC(@"HideShortsTab"), LOC(@"HideShortsTabDesc"), @"removeShorts", &kRemoveShorts, selfObject),
|
[self switchWithTitle:@"PinchToFullscreenShorts" key:@"pinchToFullscreenShorts"],
|
||||||
createSwitchItem(LOC(@"HideSubscriptionsTab"), LOC(@"HideSubscriptionsTabDesc"), @"removeSubscriptions", &kRemoveSubscriptions, selfObject),
|
[self switchWithTitle:@"ShortsToRegular" key:@"shortsToRegular"],
|
||||||
createSwitchItem(LOC(@"HideUploadButton"), LOC(@"HideUploadButtonDesc"), @"removeUploads", &kRemoveUploads, selfObject),
|
[self switchWithTitle:@"ResumeShorts" key:@"resumeShorts"],
|
||||||
createSwitchItem(LOC(@"HideLibraryTab"), LOC(@"HideLibraryTabDesc"), @"removeLibrary", &kRemoveLibrary, selfObject)
|
[self switchWithTitle:@"HideShortsLogo" key:@"hideShortsLogo"],
|
||||||
|
[self switchWithTitle:@"HideShortsSearch" key:@"hideShortsSearch"],
|
||||||
|
[self switchWithTitle:@"HideShortsCamera" key:@"hideShortsCamera"],
|
||||||
|
[self switchWithTitle:@"HideShortsMore" key:@"hideShortsMore"],
|
||||||
|
[self switchWithTitle:@"HideShortsSubscriptions" key:@"hideShortsSubscriptions"],
|
||||||
|
[self switchWithTitle:@"HideShortsLike" key:@"hideShortsLike"],
|
||||||
|
[self switchWithTitle:@"HideShortsDislike" key:@"hideShortsDislike"],
|
||||||
|
[self switchWithTitle:@"HideShortsComments" key:@"hideShortsComments"],
|
||||||
|
[self switchWithTitle:@"HideShortsRemix" key:@"hideShortsRemix"],
|
||||||
|
[self switchWithTitle:@"HideShortsShare" key:@"hideShortsShare"],
|
||||||
|
[self switchWithTitle:@"HideShortsAvatars" key:@"hideShortsAvatars"],
|
||||||
|
[self switchWithTitle:@"HideShortsThanks" key:@"hideShortsThanks"],
|
||||||
|
[self switchWithTitle:@"HideShortsSource" key:@"hideShortsSource"],
|
||||||
|
[self switchWithTitle:@"HideShortsChannelName" key:@"hideShortsChannelName"],
|
||||||
|
[self switchWithTitle:@"HideShortsDescription" key:@"hideShortsDescription"],
|
||||||
|
[self switchWithTitle:@"HideShortsAudioTrack" key:@"hideShortsAudioTrack"],
|
||||||
|
[self switchWithTitle:@"NoPromotionCards" key:@"hideShortsPromoCards"]
|
||||||
|
];
|
||||||
|
|
||||||
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Shorts") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||||
|
[settingsViewController pushViewController:picker];
|
||||||
|
return YES;
|
||||||
|
}];
|
||||||
|
|
||||||
|
[sectionItems addObject:shorts];
|
||||||
|
}
|
||||||
|
|
||||||
|
YTSettingsSectionItem *tabbar = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Tabbar")
|
||||||
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
|
detailTextBlock:^NSString *() {
|
||||||
|
return @"‣";
|
||||||
|
}
|
||||||
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||||
|
[self switchWithTitle:@"RemoveLabels" key:@"removeLabels"],
|
||||||
|
[self switchWithTitle:@"RemoveIndicators" key:@"removeIndicators"],
|
||||||
|
[self switchWithTitle:@"ReExplore" key:@"reExplore"],
|
||||||
|
[self switchWithTitle:@"AddExplore" key:@"addExplore"],
|
||||||
|
[self switchWithTitle:@"HideShortsTab" key:@"removeShorts"],
|
||||||
|
[self switchWithTitle:@"HideSubscriptionsTab" key:@"removeSubscriptions"],
|
||||||
|
[self switchWithTitle:@"HideUploadButton" key:@"removeUploads"],
|
||||||
|
[self switchWithTitle:@"HideLibraryTab" key:@"removeLibrary"]
|
||||||
];
|
];
|
||||||
|
|
||||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Tabbar") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Tabbar") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||||
[settingsViewController pushViewController:picker];
|
[settingsViewController pushViewController:picker];
|
||||||
return YES;
|
return YES;
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[sectionItems addObject:tabbar];
|
[sectionItems addObject:tabbar];
|
||||||
|
|
||||||
if (kAdvancedMode) {
|
if (ytlBool(@"advancedMode")) {
|
||||||
YTSettingsSectionItem *other = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Other")
|
YTSettingsSectionItem *other = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Other")
|
||||||
accessibilityIdentifier:nil
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
detailTextBlock:^NSString *() {
|
detailTextBlock:^NSString *() {
|
||||||
return @"‣";
|
return @"‣";
|
||||||
}
|
}
|
||||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||||
createSwitchItem(LOC(@"CopyVideoInfo"), LOC(@"CopyVideoInfoDesc"), @"copyVideoInfo", &kCopyVideoInfo, selfObject),
|
[self switchWithTitle:@"CopyVideoInfo" key:@"copyVideoInfo"],
|
||||||
createSwitchItem(LOC(@"PostManager"), LOC(@"PostManagerDesc"), @"postManager", &kPostManager, selfObject),
|
[self switchWithTitle:@"PostManager" key:@"postManager"],
|
||||||
createSwitchItem(LOC(@"SavePostImage"), LOC(@"SavePostImageDesc"), @"savePostImage", &kSavePostImage, selfObject),
|
[self switchWithTitle:@"SaveProfilePhoto" key:@"saveProfilePhoto"],
|
||||||
createSwitchItem(LOC(@"SaveProfilePhoto"), LOC(@"SaveProfilePhotoDesc"), @"saveProfilePhoto", &kSaveProfilePhoto, selfObject),
|
[self switchWithTitle:@"CommentManager" key:@"commentManager"],
|
||||||
createSwitchItem(LOC(@"CommentManager"), LOC(@"CommentManagerDesc"), @"commentManager", &kCommentManager, selfObject),
|
[self switchWithTitle:@"FixAlbums" key:@"fixAlbums"],
|
||||||
createSwitchItem(LOC(@"FixAlbums"), LOC(@"FixAlbumsDesc"), @"fixAlbums", &kFixAlbums, selfObject),
|
[self switchWithTitle:@"NativeShare" key:@"nativeShare"],
|
||||||
createSwitchItem(LOC(@"RemovePlayNext"), LOC(@"RemovePlayNextDesc"), @"removePlayNext", &kRemovePlayNext, selfObject),
|
[self switchWithTitle:@"RemovePlayNext" key:@"removePlayNext"],
|
||||||
createSwitchItem(LOC(@"NoContinueWatching"), LOC(@"NoContinueWatchingDesc"), @"noContinueWatching", &kNoContinueWatching, selfObject),
|
[self switchWithTitle:@"RemoveDownloadMenu" key:@"removeDownloadMenu"],
|
||||||
createSwitchItem(LOC(@"NoSearchHistory"), LOC(@"NoSearchHistoryDesc"), @"noSearchHistory", &kNoSearchHistory, selfObject),
|
[self switchWithTitle:@"RemoveWatchLaterMenu" key:@"removeWatchLaterMenu"],
|
||||||
createSwitchItem(LOC(@"NoRelatedWatchNexts"), LOC(@"NoRelatedWatchNextsDesc"), @"noRelatedWatchNexts", &kNoRelatedWatchNexts, selfObject),
|
[self switchWithTitle:@"RemoveSaveToPlaylistMenu" key:@"removeSaveToPlaylistMenu"],
|
||||||
createSwitchItem(LOC(@"StickSortComments"), LOC(@"StickSortCommentsDesc"), @"stickSortComments", &kStickSortComments, selfObject),
|
[self switchWithTitle:@"RemoveShareMenu" key:@"removeShareMenu"],
|
||||||
createSwitchItem(LOC(@"HideSortComments"), LOC(@"HideSortCommentsDesc"), @"hideSortComments", &kHideSortComments, selfObject),
|
[self switchWithTitle:@"RemoveNotInterestedMenu" key:@"removeNotInterestedMenu"],
|
||||||
createSwitchItem(LOC(@"PlaylistOldMinibar"), LOC(@"PlaylistOldMinibarDesc"), @"playlistOldMinibar", &kPlaylistOldMinibar, selfObject),
|
[self switchWithTitle:@"RemoveDontRecommendMenu" key:@"removeDontRecommendMenu"],
|
||||||
createSwitchItem(LOC(@"DisableRTL"), LOC(@"DisableRTLDesc"), @"disableRTL", &kDisableRTL, selfObject)
|
[self switchWithTitle:@"RemoveReportMenu" key:@"removeReportMenu"],
|
||||||
|
[self switchWithTitle:@"NoContinueWatching" key:@"noContinueWatching"],
|
||||||
|
[self switchWithTitle:@"NoSearchHistory" key:@"noSearchHistory"],
|
||||||
|
[self switchWithTitle:@"NoRelatedWatchNexts" key:@"noRelatedWatchNexts"],
|
||||||
|
[self switchWithTitle:@"StickSortComments" key:@"stickSortComments"],
|
||||||
|
[self switchWithTitle:@"HideSortComments" key:@"hideSortComments"],
|
||||||
|
[self switchWithTitle:@"PlaylistOldMinibar" key:@"playlistOldMinibar"],
|
||||||
|
[self switchWithTitle:@"DisableRTL" key:@"disableRTL"]
|
||||||
];
|
];
|
||||||
|
|
||||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Other") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Other") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||||
[settingsViewController pushViewController:picker];
|
[settingsViewController pushViewController:picker];
|
||||||
return YES;
|
return YES;
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[sectionItems addObject:other];
|
[sectionItems addObject:other];
|
||||||
|
|
||||||
[sectionItems addObject:space];
|
[sectionItems addObject:space];
|
||||||
|
|
||||||
YTSettingsSectionItem *startup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Startup")
|
YTSettingsSectionItem *speed = [YTSettingsSectionItemClass itemWithTitle:LOC(@"HoldToSpeed")
|
||||||
accessibilityIdentifier:nil
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
detailTextBlock:^NSString *() {
|
detailTextBlock:^NSString *() {
|
||||||
switch (kPivotIndex) {
|
NSArray *speedLabels = @[LOC(@"Disabled"), LOC(@"Default"), @"0.25×", @"0.5×", @"0.75×", @"1.0×", @"1.25×", @"1.5×", @"1.75×", @"2.0×", @"3.0×", @"4.0×", @"5.0×"];
|
||||||
case 1:
|
return speedLabels[ytlInt(@"speedIndex")];
|
||||||
return LOC(@"Explore");
|
|
||||||
case 2:
|
|
||||||
return LOC(@"ShortsTab");
|
|
||||||
case 3:
|
|
||||||
return LOC(@"Subscriptions");
|
|
||||||
case 4:
|
|
||||||
return LOC(@"Library");
|
|
||||||
case 0:
|
|
||||||
default:
|
|
||||||
return LOC(@"Home");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
NSMutableArray <YTSettingsSectionItem *> *rows = [NSMutableArray array];
|
||||||
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Home") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *home, NSUInteger arg1) {
|
NSArray *speedLabels = @[LOC(@"Disable"), LOC(@"Default"), @"0.25×", @"0.5×", @"0.75×", @"1.0×", @"1.25×", @"1.5×", @"1.75×", @"2.0×", @"3.0×", @"4.0×", @"5.0×"];
|
||||||
kPivotIndex = 0;
|
|
||||||
|
for (NSUInteger i = 0; i < speedLabels.count; i++) {
|
||||||
|
NSString *title = speedLabels[i];
|
||||||
|
YTSettingsSectionItem *item = [YTSettingsSectionItemClass checkmarkItemWithTitle:title titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
[settingsViewController reloadData];
|
[settingsViewController reloadData];
|
||||||
[self updateIntegerPrefsForKey:@"pivotIndex" intValue:kPivotIndex];
|
ytlSetInt((int)arg1, @"speedIndex");
|
||||||
return YES;
|
return YES;
|
||||||
}],
|
}];
|
||||||
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Explore") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *library, NSUInteger arg1) {
|
|
||||||
if (!kReExplore && !kAddExplore) {
|
[rows addObject:item];
|
||||||
YTAlertView *alertView = [%c(YTAlertView) infoDialog];
|
}
|
||||||
alertView.title = LOC(@"Warning");
|
|
||||||
alertView.subtitle = LOC(@"TabIsHidden");
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"HoldToSpeed") pickerSectionTitle:nil rows:rows selectedItemIndex:ytlInt(@"speedIndex") parentResponder:[self parentResponder]];
|
||||||
[alertView show];
|
|
||||||
return NO;
|
|
||||||
} else {
|
|
||||||
kPivotIndex = 1;
|
|
||||||
[settingsViewController reloadData];
|
|
||||||
[self updateIntegerPrefsForKey:@"pivotIndex" intValue:kPivotIndex];
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"ShortsTab") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *shorts, NSUInteger arg1) {
|
|
||||||
if (kRemoveShorts) {
|
|
||||||
YTAlertView *alertView = [%c(YTAlertView) infoDialog];
|
|
||||||
alertView.title = LOC(@"Warning");
|
|
||||||
alertView.subtitle = LOC(@"TabIsHidden");
|
|
||||||
[alertView show];
|
|
||||||
return NO;
|
|
||||||
} else {
|
|
||||||
kPivotIndex = 2;
|
|
||||||
[settingsViewController reloadData];
|
|
||||||
[self updateIntegerPrefsForKey:@"pivotIndex" intValue:kPivotIndex];
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Subscriptions") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *subscriptions, NSUInteger arg1) {
|
|
||||||
if (kRemoveSubscriptions) {
|
|
||||||
YTAlertView *alertView = [%c(YTAlertView) infoDialog];
|
|
||||||
alertView.title = LOC(@"Warning");
|
|
||||||
alertView.subtitle = LOC(@"TabIsHidden");
|
|
||||||
[alertView show];
|
|
||||||
return NO;
|
|
||||||
} else {
|
|
||||||
kPivotIndex = 3;
|
|
||||||
[settingsViewController reloadData];
|
|
||||||
[self updateIntegerPrefsForKey:@"pivotIndex" intValue:kPivotIndex];
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Library") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *library, NSUInteger arg1) {
|
|
||||||
if (kRemoveLibrary) {
|
|
||||||
YTAlertView *alertView = [%c(YTAlertView) infoDialog];
|
|
||||||
alertView.title = LOC(@"Warning");
|
|
||||||
alertView.subtitle = LOC(@"TabIsHidden");
|
|
||||||
[alertView show];
|
|
||||||
return NO;
|
|
||||||
} else {
|
|
||||||
kPivotIndex = 4;
|
|
||||||
[settingsViewController reloadData];
|
|
||||||
[self updateIntegerPrefsForKey:@"pivotIndex" intValue:kPivotIndex];
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
}]
|
|
||||||
];
|
|
||||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Startup") pickerSectionTitle:nil rows:rows selectedItemIndex:kPivotIndex parentResponder:[self parentResponder]];
|
|
||||||
[settingsViewController pushViewController:picker];
|
[settingsViewController pushViewController:picker];
|
||||||
return YES;
|
return YES;
|
||||||
}];
|
}];
|
||||||
|
|
||||||
|
[sectionItems addObject:speed];
|
||||||
|
|
||||||
|
YTSettingsSectionItem *autoSpeed = [YTSettingsSectionItemClass itemWithTitle:LOC(@"DefaultPlaybackRate")
|
||||||
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
|
detailTextBlock:^NSString *() {
|
||||||
|
NSArray *speedLabels = @[@"0.25×", @"0.5×", @"0.75×", @"1.0×", @"1.25×", @"1.5×", @"1.75×", @"2.0×", @"3.0×", @"4.0×", @"5.0×"];
|
||||||
|
return speedLabels[ytlInt(@"autoSpeedIndex")];
|
||||||
|
}
|
||||||
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
NSMutableArray <YTSettingsSectionItem *> *rows = [NSMutableArray array];
|
||||||
|
NSArray *speedLabels = @[@"0.25×", @"0.5×", @"0.75×", @"1.0×", @"1.25×", @"1.5×", @"1.75×", @"2.0×", @"3.0×", @"4.0×", @"5.0×"];
|
||||||
|
|
||||||
|
for (NSUInteger i = 0; i < speedLabels.count; i++) {
|
||||||
|
NSString *title = speedLabels[i];
|
||||||
|
YTSettingsSectionItem *item = [YTSettingsSectionItemClass checkmarkItemWithTitle:title titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
[settingsViewController reloadData];
|
||||||
|
ytlSetInt((int)arg1, @"autoSpeedIndex");
|
||||||
|
return YES;
|
||||||
|
}];
|
||||||
|
[rows addObject:item];
|
||||||
|
}
|
||||||
|
|
||||||
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"DefaultPlaybackRate") pickerSectionTitle:nil rows:rows selectedItemIndex:ytlInt(@"autoSpeedIndex") parentResponder:[self parentResponder]];
|
||||||
|
[settingsViewController pushViewController:picker];
|
||||||
|
return YES;
|
||||||
|
}];
|
||||||
|
|
||||||
|
[sectionItems addObject:autoSpeed];
|
||||||
|
|
||||||
|
YTSettingsSectionItem *wifiQuality = [YTSettingsSectionItemClass itemWithTitle:LOC(@"PlaybackQualityOnWiFi")
|
||||||
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
|
detailTextBlock:^NSString *() {
|
||||||
|
NSArray *qualityLabels = @[LOC(@"Default"), LOC(@"Best"), @"2160p60", @"2160p", @"1440p60", @"1440p", @"1080p60", @"1080p", @"720p60", @"720p", @"480p", @"360p"];
|
||||||
|
return qualityLabels[ytlInt(@"wiFiQualityIndex")];
|
||||||
|
}
|
||||||
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
NSMutableArray <YTSettingsSectionItem *> *rows = [NSMutableArray array];
|
||||||
|
NSArray *qualityLabels = @[LOC(@"Default"), LOC(@"Best"), @"2160p60", @"2160p", @"1440p60", @"1440p", @"1080p60", @"1080p", @"720p60", @"720p", @"480p", @"360p"];
|
||||||
|
|
||||||
|
for (NSUInteger i = 0; i < qualityLabels.count; i++) {
|
||||||
|
NSString *title = qualityLabels[i];
|
||||||
|
YTSettingsSectionItem *item = [YTSettingsSectionItemClass checkmarkItemWithTitle:title titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
[settingsViewController reloadData];
|
||||||
|
ytlSetInt((int)arg1, @"wiFiQualityIndex");
|
||||||
|
return YES;
|
||||||
|
}];
|
||||||
|
|
||||||
|
[rows addObject:item];
|
||||||
|
}
|
||||||
|
|
||||||
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"SelectQuality") pickerSectionTitle:nil rows:rows selectedItemIndex:ytlInt(@"wiFiQualityIndex") parentResponder:[self parentResponder]];
|
||||||
|
[settingsViewController pushViewController:picker];
|
||||||
|
return YES;
|
||||||
|
}];
|
||||||
|
|
||||||
|
[sectionItems addObject:wifiQuality];
|
||||||
|
|
||||||
|
YTSettingsSectionItem *cellQuality = [YTSettingsSectionItemClass itemWithTitle:LOC(@"PlaybackQualityOnCellular")
|
||||||
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
|
detailTextBlock:^NSString *() {
|
||||||
|
NSArray *qualityLabels = @[LOC(@"Default"), LOC(@"Best"), @"2160p60", @"2160p", @"1440p60", @"1440p", @"1080p60", @"1080p", @"720p60", @"720p", @"480p", @"360p"];
|
||||||
|
return qualityLabels[ytlInt(@"cellQualityIndex")];
|
||||||
|
}
|
||||||
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
NSMutableArray <YTSettingsSectionItem *> *rows = [NSMutableArray array];
|
||||||
|
NSArray *qualityLabels = @[LOC(@"Default"), LOC(@"Best"), @"2160p60", @"2160p", @"1440p60", @"1440p", @"1080p60", @"1080p", @"720p60", @"720p", @"480p", @"360p"];
|
||||||
|
|
||||||
|
for (NSUInteger i = 0; i < qualityLabels.count; i++) {
|
||||||
|
NSString *title = qualityLabels[i];
|
||||||
|
YTSettingsSectionItem *item = [YTSettingsSectionItemClass checkmarkItemWithTitle:title titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
[settingsViewController reloadData];
|
||||||
|
ytlSetInt((int)arg1, @"cellQualityIndex");
|
||||||
|
return YES;
|
||||||
|
}];
|
||||||
|
|
||||||
|
[rows addObject:item];
|
||||||
|
}
|
||||||
|
|
||||||
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"SelectQuality") pickerSectionTitle:nil rows:rows selectedItemIndex:ytlInt(@"cellQualityIndex") parentResponder:[self parentResponder]];
|
||||||
|
[settingsViewController pushViewController:picker];
|
||||||
|
return YES;
|
||||||
|
}];
|
||||||
|
|
||||||
|
[sectionItems addObject:cellQuality];
|
||||||
|
|
||||||
|
YTSettingsSectionItem *startup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Startup")
|
||||||
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
|
detailTextBlock:^NSString *() {
|
||||||
|
NSArray *tabLabels = @[LOC(@"Home"), LOC(@"Explore"), LOC(@"ShortsTab"), LOC(@"Subscriptions"), LOC(@"Library")];
|
||||||
|
return tabLabels[ytlInt(@"pivotIndex")];
|
||||||
|
}
|
||||||
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
NSMutableArray <YTSettingsSectionItem *> *rows = [NSMutableArray array];
|
||||||
|
NSArray *tabLabels = @[LOC(@"Home"), LOC(@"Explore"), LOC(@"ShortsTab"), LOC(@"Subscriptions"), LOC(@"Library")];
|
||||||
|
|
||||||
|
for (NSUInteger i = 0; i < tabLabels.count; i++) {
|
||||||
|
NSString *title = tabLabels[i];
|
||||||
|
YTSettingsSectionItem *item = [YTSettingsSectionItemClass checkmarkItemWithTitle:title titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
if (([title isEqualToString:LOC(@"Explore")] && !ytlBool(@"reExplore") && !ytlBool(@"addExplore")) ||
|
||||||
|
([title isEqualToString:LOC(@"ShortsTab")] && ytlBool(@"removeShorts")) ||
|
||||||
|
([title isEqualToString:LOC(@"Subscriptions")] && ytlBool(@"removeSubscriptions")) ||
|
||||||
|
([title isEqualToString:LOC(@"Library")] && ytlBool(@"removeLibrary"))) {
|
||||||
|
YTAlertView *alertView = [%c(YTAlertView) infoDialog];
|
||||||
|
alertView.title = LOC(@"Warning");
|
||||||
|
alertView.subtitle = LOC(@"TabIsHidden");
|
||||||
|
[alertView show];
|
||||||
|
return NO;
|
||||||
|
} else {
|
||||||
|
[settingsViewController reloadData];
|
||||||
|
ytlSetInt((int)arg1, @"pivotIndex");
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
|
||||||
|
[rows addObject:item];
|
||||||
|
}
|
||||||
|
|
||||||
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Startup") pickerSectionTitle:nil rows:rows selectedItemIndex:ytlInt(@"pivotIndex") parentResponder:[self parentResponder]];
|
||||||
|
[settingsViewController pushViewController:picker];
|
||||||
|
return YES;
|
||||||
|
}];
|
||||||
|
|
||||||
[sectionItems addObject:startup];
|
[sectionItems addObject:startup];
|
||||||
}
|
}
|
||||||
|
|
||||||
[sectionItems addObject:space];
|
[sectionItems addObject:space];
|
||||||
|
|
||||||
YTSettingsSectionItem *ps = [%c(YTSettingsSectionItem) itemWithTitle:@"PoomSmart" titleDescription:@"YouTube-X, YTNoPremium, YTClassicVideoQuality, YTShortsProgress, YTReExplore, SkipContentWarning, YTAutoFullscreen, YouTubeHeaders" accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
YTSettingsSectionItem *support = [%c(YTSettingsSectionItem) itemWithTitle:LOC(@"SupportDevelopment") accessibilityIdentifier:@"YTLiteSectionItem" detailTextBlock:^NSString *() { return @"♡"; } selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/PoomSmart/"]];
|
YTDefaultSheetController *sheetController = [%c(YTDefaultSheetController) sheetControllerWithMessage:LOC(@"SupportDevelopment") subMessage:LOC(@"SupportDevelopmentDesc") delegate:nil parentResponder:nil];
|
||||||
}];
|
YTActionSheetHeaderView *headerView = [sheetController valueForKey:@"_headerView"];
|
||||||
|
YTFormattedStringLabel *subtitle = [headerView valueForKey:@"_subtitleLabel"];
|
||||||
|
subtitle.numberOfLines = 0;
|
||||||
|
[headerView showHeaderDivider];
|
||||||
|
|
||||||
YTSettingsSectionItem *miro = [%c(YTSettingsSectionItem) itemWithTitle:@"MiRO92" titleDescription:@"YTNoShorts" accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
[sheetController addAction:[%c(YTActionSheetAction) actionWithTitle:@"PayPal" iconImage:[self resizedImageNamed:@"paypal"] secondaryIconImage:nil accessibilityIdentifier:nil handler:^ {
|
||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/MiRO92/"]];
|
[%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://paypal.me/dayanch96"]];
|
||||||
}];
|
}]];
|
||||||
|
|
||||||
YTSettingsSectionItem *lillie = [%c(YTSettingsSectionItem) itemWithTitle:@"Lillie" titleDescription:@"ExtraSpeedOptions" accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
[sheetController addAction:[%c(YTActionSheetAction) actionWithTitle:@"Github Sponsors" iconImage:[self resizedImageNamed:@"github"] secondaryIconImage:nil accessibilityIdentifier:nil handler:^ {
|
||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/LillieH1000"]];
|
[%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/sponsors/dayanch96"]];
|
||||||
}];
|
}]];
|
||||||
|
|
||||||
YTSettingsSectionItem *stalker = [%c(YTSettingsSectionItem) itemWithTitle:@"Stalker" titleDescription:LOC(@"ChineseSimplified") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
[sheetController addAction:[%c(YTActionSheetAction) actionWithTitle:@"Buy Me a Coffee" iconImage:[self resizedImageNamed:@"coffee"] secondaryIconImage:nil accessibilityIdentifier:nil handler:^ {
|
||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/xiangfeidexiaohuo"]];
|
[%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://www.buymeacoffee.com/dayanch96"]];
|
||||||
}];
|
}]];
|
||||||
|
|
||||||
YTSettingsSectionItem *clement = [%c(YTSettingsSectionItem) itemWithTitle:@"Clement" titleDescription:LOC(@"ChineseTraditional") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
[sheetController addAction:[%c(YTActionSheetAction) actionWithTitle:@"USDT (TRC20)" iconImage:[self resizedImageNamed:@"usdt"] secondaryIconImage:nil accessibilityIdentifier:nil handler:^ {
|
||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://twitter.com/a100900900"]];
|
[UIPasteboard generalPasteboard].string = @"TEdKJdKwc1Bbu8Py4um8qPQ6MbproEqNJw";
|
||||||
}];
|
[[%c(YTToastResponderEvent) eventWithMessage:LOC(@"Copied") firstResponder:[self parentResponder]] send];
|
||||||
|
}]];
|
||||||
|
|
||||||
YTSettingsSectionItem *balackburn = [%c(YTSettingsSectionItem) itemWithTitle:@"Balackburn" titleDescription:LOC(@"French") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
[sheetController addAction:[%c(YTActionSheetAction) actionWithTitle:@"BNB Smart Chain (BEP20)" iconImage:[self resizedImageNamed:@"bnb"] secondaryIconImage:nil accessibilityIdentifier:nil handler:^ {
|
||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/Balackburn"]];
|
[UIPasteboard generalPasteboard].string = @"0xc6f9fddb30ce10d70e6497950f44c8e10b72bcd6";
|
||||||
}];
|
[[%c(YTToastResponderEvent) eventWithMessage:LOC(@"Copied") firstResponder:[self parentResponder]] send];
|
||||||
|
}]];
|
||||||
|
|
||||||
YTSettingsSectionItem *decibelios = [%c(YTSettingsSectionItem) itemWithTitle:@"DeciBelioS" titleDescription:LOC(@"Spanish") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
[sheetController addAction:[%c(YTActionSheetAction) actionWithTitle:@"Boosty" iconImage:[self resizedImageNamed:@"boosty"] secondaryIconImage:nil accessibilityIdentifier:nil handler:^ {
|
||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/Deci8BelioS"]];
|
[%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://boosty.to/dayanch96"]];
|
||||||
}];
|
}]];
|
||||||
|
|
||||||
YTSettingsSectionItem *skeids = [%c(YTSettingsSectionItem) itemWithTitle:@"SKEIDs" titleDescription:LOC(@"Japanese") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
[sheetController presentFromViewController:[%c(YTUIUtils) topViewControllerForPresenting] animated:YES completion:nil];
|
||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/SKEIDs"]];
|
|
||||||
}];
|
|
||||||
|
|
||||||
YTSettingsSectionItem *hiepvk = [%c(YTSettingsSectionItem) itemWithTitle:@"Hiepvk" titleDescription:LOC(@"Vietnamese") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
|
||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/hiepvk"]];
|
|
||||||
}];
|
|
||||||
|
|
||||||
YTSettingsSectionItem *dayanch96 = [%c(YTSettingsSectionItem) itemWithTitle:@"Dayanch96" titleDescription:LOC(@"Developer") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
|
||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/Dayanch96/"]];
|
|
||||||
}];
|
|
||||||
|
|
||||||
YTSettingsSectionItem *paypal = [%c(YTSettingsSectionItem) itemWithTitle:LOC(@"DonateViaPayPal") titleDescription:nil accessibilityIdentifier:nil detailTextBlock:^NSString *() { return @"♡"; } selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
|
||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://paypal.me/Dayanch96/"]];
|
|
||||||
}];
|
|
||||||
|
|
||||||
YTSettingsSectionItem *ghSponsors = [%c(YTSettingsSectionItem) itemWithTitle:LOC(@"SupportViaGhSponsors") titleDescription:nil accessibilityIdentifier:nil detailTextBlock:^NSString *() { return @"♡"; } selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
|
||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/sponsors/dayanch96"]];
|
|
||||||
}];
|
|
||||||
|
|
||||||
YTSettingsSectionItem *cache = [%c(YTSettingsSectionItem) itemWithTitle:LOC(@"ClearCache") titleDescription:nil accessibilityIdentifier:nil detailTextBlock:^NSString *() { return GetCacheSize(); } selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
|
||||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
|
||||||
NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
|
|
||||||
[[NSFileManager defaultManager] removeItemAtPath:cachePath error:nil];
|
|
||||||
});
|
|
||||||
[[%c(YTToastResponderEvent) eventWithMessage:LOC(@"Done") firstResponder:[self parentResponder]] send];
|
|
||||||
return YES;
|
return YES;
|
||||||
}];
|
}];
|
||||||
|
|
||||||
YTSettingsSectionItem *reset = [%c(YTSettingsSectionItem) itemWithTitle:LOC(@"ResetSettings") titleDescription:nil accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
YTSettingsSectionItem *thanks = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Contributors")
|
||||||
YTAlertView *alertView = [%c(YTAlertView) confirmationDialogWithAction:^{
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
NSString *prefsPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"YTLite.plist"];
|
detailTextBlock:^NSString *() {
|
||||||
[[NSFileManager defaultManager] removeItemAtPath:prefsPath error:nil];
|
return @"‣";
|
||||||
|
}
|
||||||
[[UIApplication sharedApplication] performSelector:@selector(suspend)];
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
[NSThread sleepForTimeInterval:1.0];
|
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||||
exit(0);
|
[self linkWithTitle:@"Dayanch96" description:LOC(@"Developer") link:@"https://github.com/Dayanch96/"],
|
||||||
}
|
[self linkWithTitle:@"Dan Pashin" description:LOC(@"SpecialThanks") link:@"https://github.com/danpashin/"],
|
||||||
actionTitle:LOC(@"Yes")
|
space,
|
||||||
cancelTitle:LOC(@"No")];
|
[self linkWithTitle:@"Stalker" description:LOC(@"ChineseSimplified") link:@"https://github.com/xiangfeidexiaohuo"],
|
||||||
alertView.title = LOC(@"Warning");
|
[self linkWithTitle:@"Clement" description:LOC(@"ChineseTraditional") link:@"https://twitter.com/a100900900"],
|
||||||
alertView.subtitle = LOC(@"ResetMessage");
|
[self linkWithTitle:@"Balackburn" description:LOC(@"French") link:@"https://github.com/Balackburn"],
|
||||||
[alertView show];
|
[self linkWithTitle:@"DeciBelioS" description:LOC(@"Spanish") link:@"https://github.com/Deci8BelioS"],
|
||||||
return YES;
|
[self linkWithTitle:@"SKEIDs" description:LOC(@"Japanese") link:@"https://github.com/SKEIDs"],
|
||||||
}];
|
[self linkWithTitle:@"Hiepvk" description:LOC(@"Vietnamese") link:@"https://github.com/hiepvk"]
|
||||||
|
];
|
||||||
YTSettingsSectionItem *version = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Version")
|
|
||||||
accessibilityIdentifier:nil
|
|
||||||
detailTextBlock:^NSString *() {
|
|
||||||
return @(OS_STRINGIFY(TWEAK_VERSION));
|
|
||||||
}
|
|
||||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
|
||||||
NSArray <YTSettingsSectionItem *> *rows = @[ps, miro, lillie, dayanch96, stalker, clement, balackburn, decibelios, skeids, hiepvk, space, createSwitchItem(LOC(@"Advanced"), nil, @"advancedMode", &kAdvancedMode, selfObject), cache, reset];
|
|
||||||
|
|
||||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"About") pickerSectionTitle:LOC(@"Credits") rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"About") pickerSectionTitle:LOC(@"Credits") rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||||
[settingsViewController pushViewController:picker];
|
[settingsViewController pushViewController:picker];
|
||||||
return YES;
|
return YES;
|
||||||
}];
|
}];
|
||||||
[sectionItems addObject:paypal];
|
|
||||||
[sectionItems addObject:ghSponsors];
|
YTSettingsSectionItem *sources = [YTSettingsSectionItemClass itemWithTitle:LOC(@"OpenSourceLibs")
|
||||||
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
|
detailTextBlock:^NSString *() {
|
||||||
|
return @"‣";
|
||||||
|
}
|
||||||
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||||
|
[self linkWithTitle:@"PoomSmart" description:@"YouTube-X, YTNoPremium, YTClassicVideoQuality, YTShortsProgress, YTReExplore, SkipContentWarning, YTAutoFullscreen, YouTubeHeaders" link:@"https://github.com/PoomSmart/"],
|
||||||
|
[self linkWithTitle:@"MiRO92" description:@"YTNoShorts" link:@"https://github.com/MiRO92/YTNoShorts"],
|
||||||
|
[self linkWithTitle:@"Tony Million" description:@"Reachability" link:@"https://github.com/tonymillion/Reachability"],
|
||||||
|
[self linkWithTitle:@"jkhsjdhjs" description:@"YouTube Native Share" link:@"https://github.com/jkhsjdhjs/youtube-native-share"]
|
||||||
|
];
|
||||||
|
|
||||||
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"About") pickerSectionTitle:LOC(@"Credits") rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||||
|
[settingsViewController pushViewController:picker];
|
||||||
|
return YES;
|
||||||
|
}];
|
||||||
|
|
||||||
|
YTSettingsSectionItem *version = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Version")
|
||||||
|
accessibilityIdentifier:@"YTLiteSectionItem"
|
||||||
|
detailTextBlock:^NSString *() {
|
||||||
|
return @(OS_STRINGIFY(TWEAK_VERSION));
|
||||||
|
}
|
||||||
|
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||||
|
[self switchWithTitle:@"Advanced" key:@"advancedMode"],
|
||||||
|
|
||||||
|
[%c(YTSettingsSectionItem) itemWithTitle:LOC(@"ClearCache") titleDescription:nil accessibilityIdentifier:@"YTLiteSectionItem" detailTextBlock:^NSString *() { return GetCacheSize(); } selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||||
|
NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
|
||||||
|
[[NSFileManager defaultManager] removeItemAtPath:cachePath error:nil];
|
||||||
|
});
|
||||||
|
|
||||||
|
[[%c(YTToastResponderEvent) eventWithMessage:LOC(@"Done") firstResponder:[self parentResponder]] send];
|
||||||
|
|
||||||
|
return YES;
|
||||||
|
}],
|
||||||
|
|
||||||
|
[%c(YTSettingsSectionItem) itemWithTitle:LOC(@"ResetSettings") titleDescription:nil accessibilityIdentifier:@"YTLiteSectionItem" detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
|
YTAlertView *alertView = [%c(YTAlertView) confirmationDialogWithAction:^{
|
||||||
|
[YTLUserDefaults resetUserDefaults];
|
||||||
|
|
||||||
|
[[UIApplication sharedApplication] performSelector:@selector(suspend)];
|
||||||
|
[NSThread sleepForTimeInterval:1.0];
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
actionTitle:LOC(@"Yes")
|
||||||
|
cancelTitle:LOC(@"No")];
|
||||||
|
alertView.title = LOC(@"Warning");
|
||||||
|
alertView.subtitle = LOC(@"ResetMessage");
|
||||||
|
[alertView show];
|
||||||
|
|
||||||
|
return YES;
|
||||||
|
}]
|
||||||
|
];
|
||||||
|
|
||||||
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"About") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||||
|
[settingsViewController pushViewController:picker];
|
||||||
|
return YES;
|
||||||
|
}];
|
||||||
|
|
||||||
|
[sectionItems addObject:thanks];
|
||||||
|
|
||||||
|
[sectionItems addObject:sources];
|
||||||
|
|
||||||
|
[sectionItems addObject:support];
|
||||||
|
|
||||||
[sectionItems addObject:version];
|
[sectionItems addObject:version];
|
||||||
|
|
||||||
BOOL isNew = [settingsViewController respondsToSelector:@selector(setSectionItems:forCategory:title:icon:titleDescription:headerHidden:)];
|
BOOL isNew = [settingsViewController respondsToSelector:@selector(setSectionItems:forCategory:title:icon:titleDescription:headerHidden:)];
|
||||||
@@ -500,27 +632,22 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
|||||||
return;
|
return;
|
||||||
} %orig;
|
} %orig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%new
|
||||||
|
- (UIImage *)resizedImageNamed:(NSString *)iconName {
|
||||||
|
|
||||||
|
UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:CGSizeMake(32, 32)];
|
||||||
|
UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext * _Nonnull rendererContext) {
|
||||||
|
UIView *imageView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)];
|
||||||
|
UIImageView *iconImageView = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:[NSBundle.ytl_defaultBundle pathForResource:iconName ofType:@"png"]]];
|
||||||
|
iconImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||||
|
iconImageView.clipsToBounds = YES;
|
||||||
|
iconImageView.frame = imageView.bounds;
|
||||||
|
|
||||||
|
[imageView addSubview:iconImageView];
|
||||||
|
[imageView.layer renderInContext:rendererContext.CGContext];
|
||||||
|
}];
|
||||||
|
|
||||||
|
return image;
|
||||||
|
}
|
||||||
%end
|
%end
|
||||||
|
|
||||||
%ctor {
|
|
||||||
if (!kAdvancedModeReminder && !kAdvancedMode) {
|
|
||||||
NSString *prefsPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"YTLite.plist"];
|
|
||||||
NSMutableDictionary *prefs = [NSMutableDictionary dictionaryWithContentsOfFile:prefsPath];
|
|
||||||
[prefs setObject:@(YES) forKey:@"advancedModeReminder"];
|
|
||||||
[prefs writeToFile:prefsPath atomically:NO];
|
|
||||||
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("com.dvntm.ytlite.prefschanged"), NULL, NULL, YES);
|
|
||||||
|
|
||||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
|
||||||
YTAlertView *alertView = [%c(YTAlertView) confirmationDialogWithAction:^{
|
|
||||||
[prefs setObject:@(YES) forKey:@"advancedMode"];
|
|
||||||
[prefs writeToFile:prefsPath atomically:NO];
|
|
||||||
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("com.dvntm.ytlite.prefschanged"), NULL, NULL, YES);
|
|
||||||
}
|
|
||||||
actionTitle:LOC(@"Yes")
|
|
||||||
cancelTitle:LOC(@"No")];
|
|
||||||
alertView.title = @"YTLite";
|
|
||||||
alertView.subtitle = [NSString stringWithFormat:LOC(@"AdvancedModeReminder"), @"YTLite", LOC(@"Version"), LOC(@"Advanced")];
|
|
||||||
[alertView show];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#import <rootless.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface NSBundle (YTLite)
|
||||||
|
|
||||||
|
// Returns YTLite default bundle. Supports rootless if defined in compilation parameters
|
||||||
|
@property (class, nonatomic, readonly) NSBundle *ytl_defaultBundle;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
#import "NSBundle+YTLite.h"
|
||||||
|
|
||||||
|
@implementation NSBundle (YTLite)
|
||||||
|
|
||||||
|
+ (NSBundle *)ytl_defaultBundle {
|
||||||
|
static NSBundle *bundle = nil;
|
||||||
|
static dispatch_once_t onceToken;
|
||||||
|
|
||||||
|
dispatch_once(&onceToken, ^{
|
||||||
|
NSString *tweakBundlePath = [[NSBundle mainBundle] pathForResource:@"YTLite" ofType:@"bundle"];
|
||||||
|
NSString *rootlessBundlePath = ROOT_PATH_NS("/Library/Application Support/YTLite.bundle");
|
||||||
|
|
||||||
|
bundle = [NSBundle bundleWithPath:tweakBundlePath ?: rootlessBundlePath];
|
||||||
|
});
|
||||||
|
|
||||||
|
return bundle;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2011, Tony Million.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#import <SystemConfiguration/SystemConfiguration.h>
|
||||||
|
|
||||||
|
//! Project version number for MacOSReachability.
|
||||||
|
FOUNDATION_EXPORT double ReachabilityVersionNumber;
|
||||||
|
|
||||||
|
//! Project version string for MacOSReachability.
|
||||||
|
FOUNDATION_EXPORT const unsigned char ReachabilityVersionString[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create NS_ENUM macro if it does not exist on the targeted version of iOS or OS X.
|
||||||
|
*
|
||||||
|
* @see http://nshipster.com/ns_enum-ns_options/
|
||||||
|
**/
|
||||||
|
#ifndef NS_ENUM
|
||||||
|
#define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern NSString *const kReachabilityChangedNotification;
|
||||||
|
|
||||||
|
typedef NS_ENUM(NSInteger, NetworkStatus) {
|
||||||
|
// Apple NetworkStatus Compatible Names.
|
||||||
|
NotReachable = 0,
|
||||||
|
ReachableViaWiFi = 2,
|
||||||
|
ReachableViaWWAN = 1
|
||||||
|
};
|
||||||
|
|
||||||
|
@class Reachability;
|
||||||
|
|
||||||
|
typedef void (^NetworkReachable)(Reachability * reachability);
|
||||||
|
typedef void (^NetworkUnreachable)(Reachability * reachability);
|
||||||
|
typedef void (^NetworkReachability)(Reachability * reachability, SCNetworkConnectionFlags flags);
|
||||||
|
|
||||||
|
|
||||||
|
@interface Reachability : NSObject
|
||||||
|
|
||||||
|
@property (nonatomic, copy) NetworkReachable reachableBlock;
|
||||||
|
@property (nonatomic, copy) NetworkUnreachable unreachableBlock;
|
||||||
|
@property (nonatomic, copy) NetworkReachability reachabilityBlock;
|
||||||
|
|
||||||
|
@property (nonatomic, assign) BOOL reachableOnWWAN;
|
||||||
|
|
||||||
|
|
||||||
|
+(instancetype)reachabilityWithHostname:(NSString*)hostname;
|
||||||
|
// This is identical to the function above, but is here to maintain
|
||||||
|
//compatibility with Apples original code. (see .m)
|
||||||
|
+(instancetype)reachabilityWithHostName:(NSString*)hostname;
|
||||||
|
+(instancetype)reachabilityForInternetConnection;
|
||||||
|
+(instancetype)reachabilityWithAddress:(void *)hostAddress;
|
||||||
|
+(instancetype)reachabilityForLocalWiFi;
|
||||||
|
+(instancetype)reachabilityWithURL:(NSURL*)url;
|
||||||
|
|
||||||
|
-(instancetype)initWithReachabilityRef:(SCNetworkReachabilityRef)ref;
|
||||||
|
|
||||||
|
-(BOOL)startNotifier;
|
||||||
|
-(void)stopNotifier;
|
||||||
|
|
||||||
|
-(BOOL)isReachable;
|
||||||
|
-(BOOL)isReachableViaWWAN;
|
||||||
|
-(BOOL)isReachableViaWiFi;
|
||||||
|
|
||||||
|
// WWAN may be available, but not active until a connection has been established.
|
||||||
|
// WiFi may require a connection for VPN on Demand.
|
||||||
|
-(BOOL)isConnectionRequired; // Identical DDG variant.
|
||||||
|
-(BOOL)connectionRequired; // Apple's routine.
|
||||||
|
// Dynamic, on demand connection?
|
||||||
|
-(BOOL)isConnectionOnDemand;
|
||||||
|
// Is user intervention required?
|
||||||
|
-(BOOL)isInterventionRequired;
|
||||||
|
|
||||||
|
-(NetworkStatus)currentReachabilityStatus;
|
||||||
|
-(SCNetworkReachabilityFlags)reachabilityFlags;
|
||||||
|
-(NSString*)currentReachabilityString;
|
||||||
|
-(NSString*)currentReachabilityFlags;
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -0,0 +1,508 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2011, Tony Million.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#import "Reachability.h"
|
||||||
|
|
||||||
|
#import <sys/socket.h>
|
||||||
|
#import <netinet/in.h>
|
||||||
|
#import <netinet6/in6.h>
|
||||||
|
#import <arpa/inet.h>
|
||||||
|
#import <ifaddrs.h>
|
||||||
|
#import <netdb.h>
|
||||||
|
|
||||||
|
|
||||||
|
NSString *const kReachabilityChangedNotification = @"kReachabilityChangedNotification";
|
||||||
|
|
||||||
|
|
||||||
|
@interface Reachability ()
|
||||||
|
|
||||||
|
@property (nonatomic, assign) SCNetworkReachabilityRef reachabilityRef;
|
||||||
|
@property (nonatomic, strong) dispatch_queue_t reachabilitySerialQueue;
|
||||||
|
@property (nonatomic, strong) id reachabilityObject;
|
||||||
|
|
||||||
|
-(void)reachabilityChanged:(SCNetworkReachabilityFlags)flags;
|
||||||
|
-(BOOL)isReachableWithFlags:(SCNetworkReachabilityFlags)flags;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
static NSString *reachabilityFlags(SCNetworkReachabilityFlags flags)
|
||||||
|
{
|
||||||
|
return [NSString stringWithFormat:@"%c%c %c%c%c%c%c%c%c",
|
||||||
|
#if TARGET_OS_IPHONE
|
||||||
|
(flags & kSCNetworkReachabilityFlagsIsWWAN) ? 'W' : '-',
|
||||||
|
#else
|
||||||
|
'X',
|
||||||
|
#endif
|
||||||
|
(flags & kSCNetworkReachabilityFlagsReachable) ? 'R' : '-',
|
||||||
|
(flags & kSCNetworkReachabilityFlagsConnectionRequired) ? 'c' : '-',
|
||||||
|
(flags & kSCNetworkReachabilityFlagsTransientConnection) ? 't' : '-',
|
||||||
|
(flags & kSCNetworkReachabilityFlagsInterventionRequired) ? 'i' : '-',
|
||||||
|
(flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) ? 'C' : '-',
|
||||||
|
(flags & kSCNetworkReachabilityFlagsConnectionOnDemand) ? 'D' : '-',
|
||||||
|
(flags & kSCNetworkReachabilityFlagsIsLocalAddress) ? 'l' : '-',
|
||||||
|
(flags & kSCNetworkReachabilityFlagsIsDirect) ? 'd' : '-'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start listening for reachability notifications on the current run loop
|
||||||
|
static void TMReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info)
|
||||||
|
{
|
||||||
|
#pragma unused (target)
|
||||||
|
|
||||||
|
Reachability *reachability = ((__bridge Reachability*)info);
|
||||||
|
|
||||||
|
// We probably don't need an autoreleasepool here, as GCD docs state each queue has its own autorelease pool,
|
||||||
|
// but what the heck eh?
|
||||||
|
@autoreleasepool
|
||||||
|
{
|
||||||
|
[reachability reachabilityChanged:flags];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@implementation Reachability
|
||||||
|
|
||||||
|
#pragma mark - Class Constructor Methods
|
||||||
|
|
||||||
|
+(instancetype)reachabilityWithHostName:(NSString*)hostname
|
||||||
|
{
|
||||||
|
return [Reachability reachabilityWithHostname:hostname];
|
||||||
|
}
|
||||||
|
|
||||||
|
+(instancetype)reachabilityWithHostname:(NSString*)hostname
|
||||||
|
{
|
||||||
|
SCNetworkReachabilityRef ref = SCNetworkReachabilityCreateWithName(NULL, [hostname UTF8String]);
|
||||||
|
if (ref)
|
||||||
|
{
|
||||||
|
id reachability = [[self alloc] initWithReachabilityRef:ref];
|
||||||
|
|
||||||
|
return reachability;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
+(instancetype)reachabilityWithAddress:(void *)hostAddress
|
||||||
|
{
|
||||||
|
SCNetworkReachabilityRef ref = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr*)hostAddress);
|
||||||
|
if (ref)
|
||||||
|
{
|
||||||
|
id reachability = [[self alloc] initWithReachabilityRef:ref];
|
||||||
|
|
||||||
|
return reachability;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
+(instancetype)reachabilityForInternetConnection
|
||||||
|
{
|
||||||
|
struct sockaddr_in zeroAddress;
|
||||||
|
bzero(&zeroAddress, sizeof(zeroAddress));
|
||||||
|
zeroAddress.sin_len = sizeof(zeroAddress);
|
||||||
|
zeroAddress.sin_family = AF_INET;
|
||||||
|
|
||||||
|
return [self reachabilityWithAddress:&zeroAddress];
|
||||||
|
}
|
||||||
|
|
||||||
|
+(instancetype)reachabilityForLocalWiFi
|
||||||
|
{
|
||||||
|
struct sockaddr_in localWifiAddress;
|
||||||
|
bzero(&localWifiAddress, sizeof(localWifiAddress));
|
||||||
|
localWifiAddress.sin_len = sizeof(localWifiAddress);
|
||||||
|
localWifiAddress.sin_family = AF_INET;
|
||||||
|
// IN_LINKLOCALNETNUM is defined in <netinet/in.h> as 169.254.0.0
|
||||||
|
localWifiAddress.sin_addr.s_addr = htonl(IN_LINKLOCALNETNUM);
|
||||||
|
|
||||||
|
return [self reachabilityWithAddress:&localWifiAddress];
|
||||||
|
}
|
||||||
|
|
||||||
|
+(instancetype)reachabilityWithURL:(NSURL*)url
|
||||||
|
{
|
||||||
|
id reachability;
|
||||||
|
|
||||||
|
NSString *host = url.host;
|
||||||
|
BOOL isIpAddress = [self isIpAddress:host];
|
||||||
|
|
||||||
|
if (isIpAddress)
|
||||||
|
{
|
||||||
|
NSNumber *port = url.port ?: [url.scheme isEqualToString:@"https"] ? @(443) : @(80);
|
||||||
|
|
||||||
|
struct sockaddr_in address;
|
||||||
|
address.sin_len = sizeof(address);
|
||||||
|
address.sin_family = AF_INET;
|
||||||
|
address.sin_port = htons([port intValue]);
|
||||||
|
address.sin_addr.s_addr = inet_addr([host UTF8String]);
|
||||||
|
|
||||||
|
reachability = [self reachabilityWithAddress:&address];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
reachability = [self reachabilityWithHostname:host];
|
||||||
|
}
|
||||||
|
|
||||||
|
return reachability;
|
||||||
|
}
|
||||||
|
|
||||||
|
+(BOOL)isIpAddress:(NSString*)host
|
||||||
|
{
|
||||||
|
struct in_addr pin;
|
||||||
|
return 1 == inet_aton([host UTF8String], &pin);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Initialization methods
|
||||||
|
|
||||||
|
-(instancetype)initWithReachabilityRef:(SCNetworkReachabilityRef)ref
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
if (self != nil)
|
||||||
|
{
|
||||||
|
self.reachableOnWWAN = YES;
|
||||||
|
self.reachabilityRef = ref;
|
||||||
|
|
||||||
|
// We need to create a serial queue.
|
||||||
|
// We allocate this once for the lifetime of the notifier.
|
||||||
|
|
||||||
|
self.reachabilitySerialQueue = dispatch_queue_create("com.tonymillion.reachability", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)dealloc
|
||||||
|
{
|
||||||
|
[self stopNotifier];
|
||||||
|
|
||||||
|
if(self.reachabilityRef)
|
||||||
|
{
|
||||||
|
CFRelease(self.reachabilityRef);
|
||||||
|
self.reachabilityRef = nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.reachableBlock = nil;
|
||||||
|
self.unreachableBlock = nil;
|
||||||
|
self.reachabilityBlock = nil;
|
||||||
|
self.reachabilitySerialQueue = nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Notifier Methods
|
||||||
|
|
||||||
|
// Notifier
|
||||||
|
// NOTE: This uses GCD to trigger the blocks - they *WILL NOT* be called on THE MAIN THREAD
|
||||||
|
// - In other words DO NOT DO ANY UI UPDATES IN THE BLOCKS.
|
||||||
|
// INSTEAD USE dispatch_async(dispatch_get_main_queue(), ^{UISTUFF}) (or dispatch_sync if you want)
|
||||||
|
|
||||||
|
-(BOOL)startNotifier
|
||||||
|
{
|
||||||
|
// allow start notifier to be called multiple times
|
||||||
|
if(self.reachabilityObject && (self.reachabilityObject == self))
|
||||||
|
{
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCNetworkReachabilityContext context = { 0, NULL, NULL, NULL, NULL };
|
||||||
|
context.info = (__bridge void *)self;
|
||||||
|
|
||||||
|
if(SCNetworkReachabilitySetCallback(self.reachabilityRef, TMReachabilityCallback, &context))
|
||||||
|
{
|
||||||
|
// Set it as our reachability queue, which will retain the queue
|
||||||
|
if(SCNetworkReachabilitySetDispatchQueue(self.reachabilityRef, self.reachabilitySerialQueue))
|
||||||
|
{
|
||||||
|
// this should do a retain on ourself, so as long as we're in notifier mode we shouldn't disappear out from under ourselves
|
||||||
|
// woah
|
||||||
|
self.reachabilityObject = self;
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
NSLog(@"SCNetworkReachabilitySetDispatchQueue() failed: %s", SCErrorString(SCError()));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// UH OH - FAILURE - stop any callbacks!
|
||||||
|
SCNetworkReachabilitySetCallback(self.reachabilityRef, NULL, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
NSLog(@"SCNetworkReachabilitySetCallback() failed: %s", SCErrorString(SCError()));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we get here we fail at the internet
|
||||||
|
self.reachabilityObject = nil;
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)stopNotifier
|
||||||
|
{
|
||||||
|
// First stop, any callbacks!
|
||||||
|
SCNetworkReachabilitySetCallback(self.reachabilityRef, NULL, NULL);
|
||||||
|
|
||||||
|
// Unregister target from the GCD serial dispatch queue.
|
||||||
|
SCNetworkReachabilitySetDispatchQueue(self.reachabilityRef, NULL);
|
||||||
|
|
||||||
|
self.reachabilityObject = nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - reachability tests
|
||||||
|
|
||||||
|
// This is for the case where you flick the airplane mode;
|
||||||
|
// you end up getting something like this:
|
||||||
|
//Reachability: WR ct-----
|
||||||
|
//Reachability: -- -------
|
||||||
|
//Reachability: WR ct-----
|
||||||
|
//Reachability: -- -------
|
||||||
|
// We treat this as 4 UNREACHABLE triggers - really apple should do better than this
|
||||||
|
|
||||||
|
#define testcase (kSCNetworkReachabilityFlagsConnectionRequired | kSCNetworkReachabilityFlagsTransientConnection)
|
||||||
|
|
||||||
|
-(BOOL)isReachableWithFlags:(SCNetworkReachabilityFlags)flags
|
||||||
|
{
|
||||||
|
BOOL connectionUP = YES;
|
||||||
|
|
||||||
|
if(!(flags & kSCNetworkReachabilityFlagsReachable))
|
||||||
|
connectionUP = NO;
|
||||||
|
|
||||||
|
if( (flags & testcase) == testcase )
|
||||||
|
connectionUP = NO;
|
||||||
|
|
||||||
|
#if TARGET_OS_IPHONE
|
||||||
|
if(flags & kSCNetworkReachabilityFlagsIsWWAN)
|
||||||
|
{
|
||||||
|
// We're on 3G.
|
||||||
|
if(!self.reachableOnWWAN)
|
||||||
|
{
|
||||||
|
// We don't want to connect when on 3G.
|
||||||
|
connectionUP = NO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return connectionUP;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)isReachable
|
||||||
|
{
|
||||||
|
SCNetworkReachabilityFlags flags;
|
||||||
|
|
||||||
|
if(!SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
|
||||||
|
return NO;
|
||||||
|
|
||||||
|
return [self isReachableWithFlags:flags];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)isReachableViaWWAN
|
||||||
|
{
|
||||||
|
#if TARGET_OS_IPHONE
|
||||||
|
|
||||||
|
SCNetworkReachabilityFlags flags = 0;
|
||||||
|
|
||||||
|
if(SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
|
||||||
|
{
|
||||||
|
// Check we're REACHABLE
|
||||||
|
if(flags & kSCNetworkReachabilityFlagsReachable)
|
||||||
|
{
|
||||||
|
// Now, check we're on WWAN
|
||||||
|
if(flags & kSCNetworkReachabilityFlagsIsWWAN)
|
||||||
|
{
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)isReachableViaWiFi
|
||||||
|
{
|
||||||
|
SCNetworkReachabilityFlags flags = 0;
|
||||||
|
|
||||||
|
if(SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
|
||||||
|
{
|
||||||
|
// Check we're reachable
|
||||||
|
if((flags & kSCNetworkReachabilityFlagsReachable))
|
||||||
|
{
|
||||||
|
#if TARGET_OS_IPHONE
|
||||||
|
// Check we're NOT on WWAN
|
||||||
|
if((flags & kSCNetworkReachabilityFlagsIsWWAN))
|
||||||
|
{
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// WWAN may be available, but not active until a connection has been established.
|
||||||
|
// WiFi may require a connection for VPN on Demand.
|
||||||
|
-(BOOL)isConnectionRequired
|
||||||
|
{
|
||||||
|
return [self connectionRequired];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)connectionRequired
|
||||||
|
{
|
||||||
|
SCNetworkReachabilityFlags flags;
|
||||||
|
|
||||||
|
if(SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
|
||||||
|
{
|
||||||
|
return (flags & kSCNetworkReachabilityFlagsConnectionRequired);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dynamic, on demand connection?
|
||||||
|
-(BOOL)isConnectionOnDemand
|
||||||
|
{
|
||||||
|
SCNetworkReachabilityFlags flags;
|
||||||
|
|
||||||
|
if (SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
|
||||||
|
{
|
||||||
|
return ((flags & kSCNetworkReachabilityFlagsConnectionRequired) &&
|
||||||
|
(flags & (kSCNetworkReachabilityFlagsConnectionOnTraffic | kSCNetworkReachabilityFlagsConnectionOnDemand)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Is user intervention required?
|
||||||
|
-(BOOL)isInterventionRequired
|
||||||
|
{
|
||||||
|
SCNetworkReachabilityFlags flags;
|
||||||
|
|
||||||
|
if (SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
|
||||||
|
{
|
||||||
|
return ((flags & kSCNetworkReachabilityFlagsConnectionRequired) &&
|
||||||
|
(flags & kSCNetworkReachabilityFlagsInterventionRequired));
|
||||||
|
}
|
||||||
|
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark - reachability status stuff
|
||||||
|
|
||||||
|
-(NetworkStatus)currentReachabilityStatus
|
||||||
|
{
|
||||||
|
if([self isReachable])
|
||||||
|
{
|
||||||
|
if([self isReachableViaWiFi])
|
||||||
|
return ReachableViaWiFi;
|
||||||
|
|
||||||
|
#if TARGET_OS_IPHONE
|
||||||
|
return ReachableViaWWAN;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
return NotReachable;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(SCNetworkReachabilityFlags)reachabilityFlags
|
||||||
|
{
|
||||||
|
SCNetworkReachabilityFlags flags = 0;
|
||||||
|
|
||||||
|
if(SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
|
||||||
|
{
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(NSString*)currentReachabilityString
|
||||||
|
{
|
||||||
|
NetworkStatus temp = [self currentReachabilityStatus];
|
||||||
|
|
||||||
|
if(temp == ReachableViaWWAN)
|
||||||
|
{
|
||||||
|
// Updated for the fact that we have CDMA phones now!
|
||||||
|
return NSLocalizedString(@"Cellular", @"");
|
||||||
|
}
|
||||||
|
if (temp == ReachableViaWiFi)
|
||||||
|
{
|
||||||
|
return NSLocalizedString(@"WiFi", @"");
|
||||||
|
}
|
||||||
|
|
||||||
|
return NSLocalizedString(@"No Connection", @"");
|
||||||
|
}
|
||||||
|
|
||||||
|
-(NSString*)currentReachabilityFlags
|
||||||
|
{
|
||||||
|
return reachabilityFlags([self reachabilityFlags]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Callback function calls this method
|
||||||
|
|
||||||
|
-(void)reachabilityChanged:(SCNetworkReachabilityFlags)flags
|
||||||
|
{
|
||||||
|
if([self isReachableWithFlags:flags])
|
||||||
|
{
|
||||||
|
if(self.reachableBlock)
|
||||||
|
{
|
||||||
|
self.reachableBlock(self);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(self.unreachableBlock)
|
||||||
|
{
|
||||||
|
self.unreachableBlock(self);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(self.reachabilityBlock)
|
||||||
|
{
|
||||||
|
self.reachabilityBlock(self, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
// this makes sure the change notification happens on the MAIN THREAD
|
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
[[NSNotificationCenter defaultCenter] postNotificationName:kReachabilityChangedNotification
|
||||||
|
object:self];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Debug Description
|
||||||
|
|
||||||
|
- (NSString *) description
|
||||||
|
{
|
||||||
|
NSString *description = [NSString stringWithFormat:@"<%@: %p (%@)>",
|
||||||
|
NSStringFromClass([self class]), self, [self currentReachabilityFlags]];
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface YTLUserDefaults : NSUserDefaults
|
||||||
|
|
||||||
|
@property (class, readonly, strong) YTLUserDefaults *standardUserDefaults;
|
||||||
|
|
||||||
|
- (void)reset;
|
||||||
|
|
||||||
|
+ (void)resetUserDefaults;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
#import "YTLUserDefaults.h"
|
||||||
|
|
||||||
|
@implementation YTLUserDefaults
|
||||||
|
|
||||||
|
static NSString *const kDefaultsSuiteName = @"com.dvntm.ytlite";
|
||||||
|
|
||||||
|
+ (YTLUserDefaults *)standardUserDefaults {
|
||||||
|
static dispatch_once_t onceToken;
|
||||||
|
static YTLUserDefaults *defaults = nil;
|
||||||
|
|
||||||
|
dispatch_once(&onceToken, ^{
|
||||||
|
defaults = [[self alloc] initWithSuiteName:kDefaultsSuiteName];
|
||||||
|
[defaults registerDefaults];
|
||||||
|
});
|
||||||
|
|
||||||
|
return defaults;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)reset {
|
||||||
|
[self removePersistentDomainForName:kDefaultsSuiteName];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)registerDefaults {
|
||||||
|
[self registerDefaults:@{
|
||||||
|
@"noAds": @YES,
|
||||||
|
@"backgroundPlayback": @YES,
|
||||||
|
@"removeUploads": @YES,
|
||||||
|
@"speedIndex": @1,
|
||||||
|
@"autoSpeedIndex": @3,
|
||||||
|
@"wiFiQualityIndex": @0,
|
||||||
|
@"cellQualityIndex": @0,
|
||||||
|
@"pivotIndex": @0
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)resetUserDefaults {
|
||||||
|
[[self standardUserDefaults] reset];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -1,142 +1,36 @@
|
|||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <rootless.h>
|
|
||||||
#import <Photos/Photos.h>
|
#import <Photos/Photos.h>
|
||||||
#import "../YouTubeHeader/YTAlertView.h"
|
#import "Utils/NSBundle+YTLite.h"
|
||||||
#import "../YouTubeHeader/YTIGuideResponse.h"
|
#import "Utils/YTLUserDefaults.h"
|
||||||
#import "../YouTubeHeader/YTIGuideResponseSupportedRenderers.h"
|
#import "Utils/Reachability.h"
|
||||||
#import "../YouTubeHeader/YTIPivotBarSupportedRenderers.h"
|
#import "YouTubeHeaders.h"
|
||||||
#import "../YouTubeHeader/YTIPivotBarRenderer.h"
|
|
||||||
#import "../YouTubeHeader/YTIBrowseRequest.h"
|
|
||||||
#import "../YouTubeHeader/YTISectionListRenderer.h"
|
|
||||||
#import "../YouTubeHeader/YTQTMButton.h"
|
|
||||||
#import "../YouTubeHeader/YTIButtonRenderer.h"
|
|
||||||
#import "../YouTubeHeader/YTVideoQualitySwitchOriginalController.h"
|
|
||||||
#import "../YouTubeHeader/YTPlayerViewController.h"
|
|
||||||
#import "../YouTubeHeader/YTWatchController.h"
|
|
||||||
#import "../YouTubeHeader/YTPlayerOverlay.h"
|
|
||||||
#import "../YouTubeHeader/YTPlayerOverlayProvider.h"
|
|
||||||
#import "../YouTubeHeader/YTSettingsViewController.h"
|
|
||||||
#import "../YouTubeHeader/YTSettingsSectionItem.h"
|
|
||||||
#import "../YouTubeHeader/YTSettingsSectionItemManager.h"
|
|
||||||
#import "../YouTubeHeader/YTSettingsPickerViewController.h"
|
|
||||||
#import "../YouTubeHeader/YTUIUtils.h"
|
|
||||||
#import "../YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h"
|
|
||||||
#import "../YouTubeHeader/YTToastResponderEvent.h"
|
|
||||||
#import "../YouTubeHeader/YTPageStyleController.h"
|
|
||||||
|
|
||||||
static inline NSBundle *YTLiteBundle() {
|
#define LOC(key) [NSBundle.ytl_defaultBundle localizedStringForKey:key value:nil table:nil]
|
||||||
static NSBundle *bundle = nil;
|
|
||||||
static dispatch_once_t onceToken;
|
|
||||||
|
|
||||||
dispatch_once(&onceToken, ^{
|
#define ytlBool(key) [[YTLUserDefaults standardUserDefaults] boolForKey:key]
|
||||||
NSString *tweakBundlePath = [[NSBundle mainBundle] pathForResource:@"YTLite" ofType:@"bundle"];
|
#define ytlInt(key) [[YTLUserDefaults standardUserDefaults] integerForKey:key]
|
||||||
NSString *rootlessBundlePath = ROOT_PATH_NS("/Library/Application Support/YTLite.bundle");
|
|
||||||
|
|
||||||
bundle = [NSBundle bundleWithPath:tweakBundlePath ?: rootlessBundlePath];
|
#define ytlSetBool(value, key) [[YTLUserDefaults standardUserDefaults] setBool:(value) forKey:(key)]
|
||||||
});
|
#define ytlSetInt(value, key) [[YTLUserDefaults standardUserDefaults] setInteger:(value) forKey:(key)]
|
||||||
|
|
||||||
return bundle;
|
@interface YTTouchFeedbackController : YTCollectionViewCell
|
||||||
}
|
@property (nonatomic, strong, readwrite) UIColor *feedbackColor;
|
||||||
|
|
||||||
static inline NSString *LOC(NSString *key) {
|
|
||||||
return [YTLiteBundle() localizedStringForKey:key value:nil table:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL kNoAds;
|
|
||||||
BOOL kBackgroundPlayback;
|
|
||||||
BOOL kNoCast;
|
|
||||||
BOOL kNoNotifsButton;
|
|
||||||
BOOL kNoSearchButton;
|
|
||||||
BOOL kNoVoiceSearchButton;
|
|
||||||
BOOL kStickyNavbar;
|
|
||||||
BOOL kNoSubbar;
|
|
||||||
BOOL kNoYTLogo;
|
|
||||||
BOOL kHideAutoplay;
|
|
||||||
BOOL kHideSubs;
|
|
||||||
BOOL kNoHUDMsgs;
|
|
||||||
BOOL kHidePrevNext;
|
|
||||||
BOOL kReplacePrevNext;
|
|
||||||
BOOL kNoDarkBg;
|
|
||||||
BOOL kEndScreenCards;
|
|
||||||
BOOL kNoFullscreenActions;
|
|
||||||
BOOL kPersistentProgressBar;
|
|
||||||
BOOL kNoRelatedVids;
|
|
||||||
BOOL kNoPromotionCards;
|
|
||||||
BOOL kNoWatermarks;
|
|
||||||
BOOL kMiniplayer;
|
|
||||||
BOOL kPortraitFullscreen;
|
|
||||||
BOOL kCopyWithTimestamp;
|
|
||||||
BOOL kDisableAutoplay;
|
|
||||||
BOOL kDisableAutoCaptions;
|
|
||||||
BOOL kNoContentWarning;
|
|
||||||
BOOL kClassicQuality;
|
|
||||||
BOOL kExtraSpeedOptions;
|
|
||||||
BOOL kDontSnapToChapter;
|
|
||||||
BOOL kRedProgressBar;
|
|
||||||
BOOL kNoHints;
|
|
||||||
BOOL kNoFreeZoom;
|
|
||||||
BOOL kAutoFullscreen;
|
|
||||||
BOOL kExitFullscreen;
|
|
||||||
BOOL kNoDoubleTapToSeek;
|
|
||||||
BOOL kShortsOnlyMode;
|
|
||||||
BOOL kHideShorts;
|
|
||||||
BOOL kShortsProgress;
|
|
||||||
BOOL kPinchToFullscreenShorts;
|
|
||||||
BOOL kShortsToRegular;
|
|
||||||
BOOL kResumeShorts;
|
|
||||||
BOOL kHideShortsLogo;
|
|
||||||
BOOL kHideShortsSearch;
|
|
||||||
BOOL kHideShortsCamera;
|
|
||||||
BOOL kHideShortsMore;
|
|
||||||
BOOL kHideShortsSubscriptions;
|
|
||||||
BOOL kHideShortsLike;
|
|
||||||
BOOL kHideShortsDislike;
|
|
||||||
BOOL kHideShortsComments;
|
|
||||||
BOOL kHideShortsRemix;
|
|
||||||
BOOL kHideShortsShare;
|
|
||||||
BOOL kHideShortsAvatars;
|
|
||||||
BOOL kHideShortsThanks;
|
|
||||||
BOOL kHideShortsSource;
|
|
||||||
BOOL kHideShortsChannelName;
|
|
||||||
BOOL kHideShortsDescription;
|
|
||||||
BOOL kHideShortsAudioTrack;
|
|
||||||
BOOL kHideShortsPromoCards;
|
|
||||||
BOOL kRemoveLabels;
|
|
||||||
BOOL kRemoveIndicators;
|
|
||||||
BOOL kReExplore;
|
|
||||||
BOOL kAddExplore;
|
|
||||||
BOOL kRemoveShorts;
|
|
||||||
BOOL kRemoveSubscriptions;
|
|
||||||
BOOL kRemoveUploads;
|
|
||||||
BOOL kRemoveLibrary;
|
|
||||||
BOOL kCopyVideoInfo;
|
|
||||||
BOOL kPostManager;
|
|
||||||
BOOL kSavePostImage;
|
|
||||||
BOOL kSaveProfilePhoto;
|
|
||||||
BOOL kCommentManager;
|
|
||||||
BOOL kSavePost;
|
|
||||||
BOOL kFixAlbums;
|
|
||||||
BOOL kRemovePlayNext;
|
|
||||||
BOOL kNoContinueWatching;
|
|
||||||
BOOL kNoSearchHistory;
|
|
||||||
BOOL kNoRelatedWatchNexts;
|
|
||||||
BOOL kStickSortComments;
|
|
||||||
BOOL kHideSortComments;
|
|
||||||
BOOL kPlaylistOldMinibar;
|
|
||||||
BOOL kDisableRTL;
|
|
||||||
BOOL kAdvancedMode;
|
|
||||||
BOOL kAdvancedModeReminder;
|
|
||||||
int kPivotIndex;
|
|
||||||
|
|
||||||
@interface YTSettingsSectionItemManager (Custom)
|
|
||||||
@property (nonatomic, strong) NSMutableDictionary *prefs;
|
|
||||||
@property (nonatomic, strong) NSString *prefsPath;
|
|
||||||
- (void)updatePrefsForKey:(NSString *)key enabled:(BOOL)enabled;
|
|
||||||
- (void)updateIntegerPrefsForKey:(NSString *)key intValue:(NSInteger)intValue;
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTPivotBarView : UIView
|
@interface ABCSwitch : UIControl
|
||||||
|
@property (nonatomic, strong, readwrite) UIColor *onTintColor;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTSettingsCell ()
|
||||||
|
- (void)setIndicatorIcon:(int)icon;
|
||||||
|
- (void)setTitleDescription:(id)titleDescription;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTSettingsSectionItemManager (Custom)
|
||||||
|
- (YTSettingsSectionItem *)switchWithTitle:(NSString *)title key:(NSString *)key;
|
||||||
|
- (YTSettingsSectionItem *)linkWithTitle:(NSString *)title description:(NSString *)description link:(NSString *)link;
|
||||||
|
- (UIImage *)resizedImageNamed:(NSString *)iconName;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTLightweightQTMButton ()
|
@interface YTLightweightQTMButton ()
|
||||||
@@ -146,10 +40,7 @@ int kPivotIndex;
|
|||||||
@interface YTQTMButton ()
|
@interface YTQTMButton ()
|
||||||
@property (nonatomic, strong, readwrite) YTIButtonRenderer *buttonRenderer;
|
@property (nonatomic, strong, readwrite) YTIButtonRenderer *buttonRenderer;
|
||||||
- (void)setSizeWithPaddingAndInsets:(BOOL)sizeWithPaddingAndInsets;
|
- (void)setSizeWithPaddingAndInsets:(BOOL)sizeWithPaddingAndInsets;
|
||||||
@end
|
- (BOOL)yt_isVisible;
|
||||||
|
|
||||||
@interface YTPivotBarItemView : UIView
|
|
||||||
@property (nonatomic, strong, readwrite) YTQTMButton *navigationButton;
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTRightNavigationButtons : UIView
|
@interface YTRightNavigationButtons : UIView
|
||||||
@@ -166,25 +57,106 @@ int kPivotIndex;
|
|||||||
@interface YTChipCloudCell : UICollectionViewCell
|
@interface YTChipCloudCell : UICollectionViewCell
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface YTHeaderContentComboViewController : UIViewController
|
||||||
|
- (void)refreshPivotBar;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTPivotBarViewController : UIViewController
|
||||||
|
@end
|
||||||
|
|
||||||
@interface YTAppViewController : UIViewController
|
@interface YTAppViewController : UIViewController
|
||||||
|
@property (nonatomic, assign, readonly) YTPivotBarViewController *pivotBarViewController;
|
||||||
- (void)hidePivotBar;
|
- (void)hidePivotBar;
|
||||||
- (void)showPivotBar;
|
- (void)showPivotBar;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTPivotBarViewController : UIViewController
|
@interface YTPivotBarView : UIView
|
||||||
@property (nonatomic, weak, readwrite) YTAppViewController *parentViewController;
|
|
||||||
- (void)selectItemWithPivotIdentifier:(id)pivotIndentifier;
|
- (void)selectItemWithPivotIdentifier:(id)pivotIndentifier;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface YTPivotBarViewController ()
|
||||||
|
@property (nonatomic, weak, readwrite) YTAppViewController *parentViewController;
|
||||||
|
@property (nonatomic, copy, readwrite) NSString *selectedPivotIdentifier;
|
||||||
|
- (YTPivotBarView *)pivotBarView;
|
||||||
|
- (void)selectItemWithPivotIdentifier:(id)pivotIndentifier;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTPivotBarItemView : UIView
|
||||||
|
@property (nonatomic, strong, readwrite) YTIPivotBarItemRenderer *renderer;
|
||||||
|
@property (nonatomic, weak, readwrite) YTPivotBarViewController *delegate;
|
||||||
|
@property (nonatomic, strong, readwrite) YTQTMButton *navigationButton;
|
||||||
|
- (void)manageTab:(UILongPressGestureRecognizer *)gesture;
|
||||||
|
@end
|
||||||
|
|
||||||
@interface YTScrollableNavigationController : UINavigationController
|
@interface YTScrollableNavigationController : UINavigationController
|
||||||
@property (nonatomic, weak, readwrite) YTAppViewController *parentViewController;
|
@property (nonatomic, weak, readwrite) YTAppViewController *parentViewController;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTReelWatchRootViewController : UIViewController
|
@interface YTTabsViewController : UIViewController
|
||||||
@property (nonatomic, weak, readwrite) YTScrollableNavigationController *navigationController;
|
@property (nonatomic, weak, readwrite) YTScrollableNavigationController *navigationController;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTTabsViewController : UIViewController
|
@interface YTIVideoDetails : NSObject
|
||||||
|
@property (nonatomic, copy, readwrite) NSString *title;
|
||||||
|
@property (nonatomic, copy, readwrite) NSString *shortDescription;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTIPlayerResponse : NSObject
|
||||||
|
@property (nonatomic, assign, readonly) YTIVideoDetails *videoDetails;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTPlayerResponse : NSObject
|
||||||
|
@property (nonatomic, assign, readonly) YTIPlayerResponse *playerData;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface MLQuickMenuVideoQualitySettingFormatConstraint : NSObject
|
||||||
|
- (instancetype)initWithVideoQualitySetting:(int)settings formatSelectionReason:(NSInteger)reason qualityLabel:(NSString *)label;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface MLFormat : NSObject
|
||||||
|
@property (nonatomic, assign, readonly) NSString *qualityLabel;
|
||||||
|
@property (nonatomic, assign, readonly) int singleDimensionResolution;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTSingleVideoTime : NSObject
|
||||||
|
@property (nonatomic, assign, readonly) CGFloat time;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTSingleVideoController : NSObject
|
||||||
|
@property (nonatomic, assign, readonly) float playbackRate;
|
||||||
|
@property (nonatomic, assign, readonly) CGFloat totalMediaTime;
|
||||||
|
@property (nonatomic, assign, readonly) NSArray *selectableVideoFormats;
|
||||||
|
- (void)setVideoFormatConstraint:(MLQuickMenuVideoQualitySettingFormatConstraint *)formatConstraint;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTPlayerViewController : UIViewController
|
||||||
|
@property (nonatomic, assign, readonly) YTPlayerResponse *playerResponse;
|
||||||
|
@property (nonatomic, assign, readonly) YTSingleVideoController *activeVideo;
|
||||||
|
@property (nonatomic, weak, readwrite) UIViewController *activeVideoPlayerOverlay;
|
||||||
|
@property (nonatomic, weak, readwrite) UIViewController *parentViewController;
|
||||||
|
@property (nonatomic, weak, readwrite) UIViewController *UIDelegate;
|
||||||
|
@property (nonatomic, readonly) NSString *contentVideoID;
|
||||||
|
- (void)setActiveCaptionTrack:(id)track;
|
||||||
|
- (void)setPlaybackRate:(CGFloat)rate;
|
||||||
|
- (void)shortsToRegular;
|
||||||
|
- (void)autoFullscreen;
|
||||||
|
- (void)turnOffCaptions;
|
||||||
|
- (void)setAutoSpeed;
|
||||||
|
- (void)autoQuality;
|
||||||
|
- (void)play;
|
||||||
|
- (void)pause;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTPlayerView : UIView
|
||||||
|
@property (nonatomic, weak, readwrite) YTPlayerViewController *playerViewDelegate;
|
||||||
|
@property (nonatomic, strong, readwrite) UIView *overlayView;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTMainAppControlsOverlayView : UIView
|
||||||
|
@property (nonatomic, strong, readwrite) YTPlayerViewController *playerViewController;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTReelWatchRootViewController : UIViewController
|
||||||
@property (nonatomic, weak, readwrite) YTScrollableNavigationController *navigationController;
|
@property (nonatomic, weak, readwrite) YTScrollableNavigationController *navigationController;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@@ -193,30 +165,20 @@ int kPivotIndex;
|
|||||||
|
|
||||||
@interface YTReelContentView : UIView
|
@interface YTReelContentView : UIView
|
||||||
@property (nonatomic, assign, readonly) YTReelWatchPlaybackOverlayView *playbackOverlay;
|
@property (nonatomic, assign, readonly) YTReelWatchPlaybackOverlayView *playbackOverlay;
|
||||||
|
- (void)turnShortsOnlyModeOff:(UILongPressGestureRecognizer *)gesture;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTShortsPlayerViewController : UIViewController
|
@interface YTReelPlayerViewController : UIViewController
|
||||||
|
@property (nonatomic, strong, readwrite) YTPlayerViewController *player;
|
||||||
|
- (void)reelContentViewRequestsAdvanceToNextVideo:(id)video;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTShortsPlayerViewController : YTReelPlayerViewController
|
||||||
@property (nonatomic, weak, readwrite) YTScrollableNavigationController *navigationController;
|
@property (nonatomic, weak, readwrite) YTScrollableNavigationController *navigationController;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTIVideoDetails ()
|
@interface YTPivotBarViewController ()
|
||||||
@property (nonatomic, copy, readwrite) NSString *title;
|
@property (nonatomic, weak, readwrite) YTShortsPlayerViewController *scrubberDelegate;
|
||||||
@property (nonatomic, copy, readwrite) NSString *shortDescription;
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface YTPlayerViewController (YTAFS)
|
|
||||||
@property (nonatomic, assign, readonly) YTPlayerResponse *playerResponse;
|
|
||||||
@property (nonatomic, weak, readwrite) UIViewController *parentViewController;
|
|
||||||
@property (readonly, nonatomic) NSString *contentVideoID;
|
|
||||||
- (void)setActiveCaptionTrack:(id)arg1;
|
|
||||||
- (void)shortsToRegular;
|
|
||||||
- (void)autoFullscreen;
|
|
||||||
- (void)turnOffCaptions;
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface YTPlayerView : UIView
|
|
||||||
@property (nonatomic, weak, readwrite) YTPlayerViewController *playerViewDelegate;
|
|
||||||
- (void)turnShortsOnlyModeOff:(UILongPressGestureRecognizer *)gesture;
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTEngagementPanelIdentifier : NSObject
|
@interface YTEngagementPanelIdentifier : NSObject
|
||||||
@@ -250,7 +212,7 @@ int kPivotIndex;
|
|||||||
- (void)didTapCopyInfoButton:(UIButton *)sender;
|
- (void)didTapCopyInfoButton:(UIButton *)sender;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTSegmentableInlinePlayerBarView
|
@interface YTSegmentableInlinePlayerBarView : UIView
|
||||||
@property (nonatomic, assign, readwrite) BOOL enableSnapToChapter;
|
@property (nonatomic, assign, readwrite) BOOL enableSnapToChapter;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@@ -258,7 +220,7 @@ int kPivotIndex;
|
|||||||
- (void)confirmAlertDidPressConfirm;
|
- (void)confirmAlertDidPressConfirm;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTReelPlayerButton : UIButton
|
@interface YTReelPlayerButton : YTQTMButton
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface ELMCellNode
|
@interface ELMCellNode
|
||||||
@@ -272,12 +234,6 @@ int kPivotIndex;
|
|||||||
- (void)removeCellsAtIndexPath:(NSIndexPath *)indexPath;
|
- (void)removeCellsAtIndexPath:(NSIndexPath *)indexPath;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
// @interface YTReelWatchPlaybackOverlayView : UIView
|
|
||||||
// @end
|
|
||||||
|
|
||||||
// @interface YTReelWatchHeaderView : UIView
|
|
||||||
// @end
|
|
||||||
|
|
||||||
@interface YTReelTransparentStackView : UIStackView
|
@interface YTReelTransparentStackView : UIStackView
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@@ -288,15 +244,16 @@ int kPivotIndex;
|
|||||||
@property (atomic, assign, readonly) NSMutableArray *allObjects;
|
@property (atomic, assign, readonly) NSMutableArray *allObjects;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface ASDisplayNode : NSObject
|
@interface ASDisplayNode ()
|
||||||
@property (nonatomic, assign, readonly) UIViewController *closestViewController;
|
@property (nonatomic, assign, readonly) UIViewController *closestViewController;
|
||||||
@property (atomic, assign, readonly) ASNodeAncestryEnumerator *supernodes;
|
@property (atomic, assign, readonly) ASNodeAncestryEnumerator *supernodes;
|
||||||
@property (atomic, copy, readwrite) NSArray *yogaChildren;
|
// @property (atomic, copy, readwrite) NSArray *yogaChildren;
|
||||||
@property (atomic) CALayer *layer;
|
@property (atomic) CALayer *layer;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface ELMContainerNode : ASDisplayNode
|
@interface ELMContainerNode : ASDisplayNode
|
||||||
@property (nonatomic, strong, readwrite) NSString *copiedComment;
|
@property (nonatomic, strong, readwrite) NSString *copiedComment;
|
||||||
|
@property (nonatomic, strong, readwrite) NSURL *copiedURL;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface ELMExpandableTextNode : ASDisplayNode
|
@interface ELMExpandableTextNode : ASDisplayNode
|
||||||
@@ -307,6 +264,9 @@ int kPivotIndex;
|
|||||||
@property (atomic, copy, readwrite) NSURL *URL;
|
@property (atomic, copy, readwrite) NSURL *URL;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface YTImageZoomNode : ASNetworkImageNode
|
||||||
|
@end
|
||||||
|
|
||||||
@interface ASTextNode : ASDisplayNode
|
@interface ASTextNode : ASDisplayNode
|
||||||
@property (atomic, copy, readwrite) NSAttributedString *attributedText;
|
@property (atomic, copy, readwrite) NSAttributedString *attributedText;
|
||||||
@end
|
@end
|
||||||
@@ -314,29 +274,77 @@ int kPivotIndex;
|
|||||||
@interface _ASDisplayView : UIView
|
@interface _ASDisplayView : UIView
|
||||||
@property (nonatomic, strong, readwrite) ASDisplayNode *keepalive_node;
|
@property (nonatomic, strong, readwrite) ASDisplayNode *keepalive_node;
|
||||||
- (void)postManager:(UILongPressGestureRecognizer *)sender;
|
- (void)postManager:(UILongPressGestureRecognizer *)sender;
|
||||||
- (void)saveImage:(UILongPressGestureRecognizer *)sender;
|
|
||||||
- (void)savePFP:(UILongPressGestureRecognizer *)sender;
|
- (void)savePFP:(UILongPressGestureRecognizer *)sender;
|
||||||
- (void)commentManager:(UILongPressGestureRecognizer *)sender;
|
- (void)commentManager:(UILongPressGestureRecognizer *)sender;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface MLHAMQueuePlayer : NSObject
|
|
||||||
@property id playerEventCenter;
|
|
||||||
-(void)setRate:(float)rate;
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface YTVarispeedSwitchControllerOption : NSObject
|
@interface YTVarispeedSwitchControllerOption : NSObject
|
||||||
- (id)initWithTitle:(id)title rate:(float)rate;
|
- (id)initWithTitle:(NSString *)title rate:(float)rate;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface HAMPlayerInternal : NSObject
|
@interface YTVarispeedSwitchController : NSObject
|
||||||
- (void)setRate:(float)rate;
|
- (void)addActionForOption:(YTVarispeedSwitchControllerOption *)option;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface MLPlayerEventCenter : NSObject
|
@interface YTLabel : UILabel
|
||||||
- (void)broadcastRateChange:(float)rate;
|
- (void)setFontAttributes:(id)attributes text:(NSString *)text;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTInlinePlayerScrubUserEducationView : UIView
|
||||||
|
@property (nonatomic, assign, readwrite) NSUInteger labelType;
|
||||||
|
- (YTLabel *)userEducationLabel;
|
||||||
|
- (void)setVisible:(BOOL)visible;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTMainAppVideoPlayerOverlayViewController : UIViewController
|
@interface YTMainAppVideoPlayerOverlayViewController : UIViewController
|
||||||
|
@property (nonatomic, weak, readwrite) YTPlayerViewController *parentViewController;
|
||||||
|
- (CGFloat)currentPlaybackRate;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTInlinePlayerBarContainerView : UIView
|
||||||
|
@property (nonatomic, strong, readwrite) YTLabel *durationLabel;
|
||||||
|
@property (nonatomic, strong, readwrite) NSString *endTimeString;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTMainAppVideoPlayerOverlayView : UIView
|
||||||
|
@property (nonatomic, assign, readonly) YTInlinePlayerScrubUserEducationView *scrubUserEducationView;
|
||||||
|
@property (nonatomic, strong, readwrite) YTInlinePlayerBarContainerView *playerBar;
|
||||||
|
@property (nonatomic, weak, readwrite) YTMainAppVideoPlayerOverlayViewController *delegate;
|
||||||
|
- (void)speedmasterYtLite:(UILongPressGestureRecognizer *)sender;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTMainAppVideoPlayerOverlayViewController ()
|
||||||
|
@property (nonatomic, assign, readonly) YTMainAppVideoPlayerOverlayView * videoPlayerOverlayView;
|
||||||
@property (readonly, nonatomic) CGFloat mediaTime;
|
@property (readonly, nonatomic) CGFloat mediaTime;
|
||||||
@property (readonly, nonatomic) NSString *videoID;
|
@property (readonly, nonatomic) NSString *videoID;
|
||||||
|
- (void)setPlaybackRate:(CGFloat)rate;
|
||||||
|
- (CGFloat)currentPlaybackRate;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTSpeedmasterController : NSObject
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTFormattedStringLabel : UILabel
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTActionSheetHeaderView : UIView
|
||||||
|
- (void)showHeaderDivider;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTActionSheetAction : NSObject
|
||||||
|
+ (instancetype)actionWithTitle:(NSString *)title iconImage:(UIImage *)image style:(NSInteger)style handler:(void (^)(void))handler;
|
||||||
|
+ (instancetype)actionWithTitle:(NSString *)title iconImage:(UIImage *)image secondaryIconImage:(UIImage *)secondaryIconImage accessibilityIdentifier:(NSString *)identifier handler:(void (^)(void))handler;
|
||||||
|
+ (instancetype)actionWithTitle:(NSString *)title titleColor:(UIColor *)titleColor iconImage:(UIImage *)image iconColor:(UIColor *)iconColor disableAutomaticButtonColor:(BOOL)autoColor accessibilityIdentifier:(NSString *)identifier handler:(void (^)(void))handler;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTDefaultSheetController : NSObject
|
||||||
|
- (void)addAction:(YTActionSheetAction *)action;
|
||||||
|
- (void)presentFromView:(UIView *)view animated:(BOOL)animated completion:(void(^)(void))completion;
|
||||||
|
- (void)presentFromViewController:(UIViewController *)vc animated:(BOOL)animated completion:(void(^)(void))completion;
|
||||||
|
- (void)dismissViewControllerAnimated:(BOOL)animated completion:(void(^)(void))completion;
|
||||||
|
|
||||||
|
+ (instancetype)sheetControllerWithParentResponder:(id)parentResponder;
|
||||||
|
+ (instancetype)sheetControllerWithParentResponder:(id)parentResponder forcedSheetStyle:(NSInteger)style;
|
||||||
|
+ (instancetype)sheetControllerWithMessage:(NSString *)message delegate:(id)delegate parentResponder:(id)parentResponder;
|
||||||
|
+ (instancetype)sheetControllerWithMessage:(NSString *)message subMessage:(NSString *)subMessage delegate:(id)delegate parentResponder:(id)parentResponder;
|
||||||
@end
|
@end
|
||||||
+126
@@ -0,0 +1,126 @@
|
|||||||
|
/* YouTube Native Share - An iOS Tweak to replace YouTube's share sheet and remove source identifiers.
|
||||||
|
* Copyright (C) 2024 YouTube Native Share Contributors
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Source code can be found here: https://github.com/jkhsjdhjs/youtube-native-share (Thanks to @jkhsjdhjs)
|
||||||
|
|
||||||
|
#include <UIKit/UIActivityViewController.h>
|
||||||
|
|
||||||
|
#import "../YouTubeHeader/YTUIUtils.h"
|
||||||
|
|
||||||
|
#import "../protobuf/objectivec/GPBDescriptor.h"
|
||||||
|
#import "../protobuf/objectivec/GPBMessage.h"
|
||||||
|
#import "../protobuf/objectivec/GPBUnknownField.h"
|
||||||
|
#import "../protobuf/objectivec/GPBUnknownFieldSet.h"
|
||||||
|
|
||||||
|
#define ytlBool(key) [[[NSUserDefaults alloc] initWithSuiteName:@"com.dvntm.ytlite"] boolForKey:key]
|
||||||
|
|
||||||
|
@interface CustomGPBMessage : GPBMessage
|
||||||
|
+ (instancetype)deserializeFromString:(NSString *)string;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTICommand : GPBMessage
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface ELMPBCommand : GPBMessage
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface ELMPBShowActionSheetCommand : GPBMessage
|
||||||
|
@property (nonatomic, strong, readwrite) ELMPBCommand *onAppear;
|
||||||
|
@property (nonatomic, assign, readwrite) BOOL hasOnAppear;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTIUpdateShareSheetCommand
|
||||||
|
@property (nonatomic, assign, readwrite) BOOL hasSerializedShareEntity;
|
||||||
|
@property (nonatomic, copy, readwrite) NSString *serializedShareEntity;
|
||||||
|
+ (GPBExtensionDescriptor*)updateShareSheetCommand;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTIInnertubeCommandExtensionRoot
|
||||||
|
+ (GPBExtensionDescriptor*)innertubeCommand;
|
||||||
|
@end
|
||||||
|
|
||||||
|
typedef NS_ENUM(NSInteger, ShareEntityType) {
|
||||||
|
ShareEntityFieldVideo = 1,
|
||||||
|
ShareEntityFieldPlaylist = 2,
|
||||||
|
ShareEntityFieldChannel = 3,
|
||||||
|
ShareEntityFieldClip = 8
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline NSString* extractIdWithFormat(GPBUnknownFieldSet *fields, NSInteger fieldNumber, NSString *format) {
|
||||||
|
if (![fields hasField:fieldNumber])
|
||||||
|
return nil;
|
||||||
|
GPBUnknownField *idField = [fields getField:fieldNumber];
|
||||||
|
if ([idField.lengthDelimitedList count] != 1)
|
||||||
|
return nil;
|
||||||
|
NSString *id = [[NSString alloc] initWithData:[idField.lengthDelimitedList firstObject] encoding:NSUTF8StringEncoding];
|
||||||
|
return [NSString stringWithFormat:format, id];
|
||||||
|
}
|
||||||
|
|
||||||
|
%hook ELMPBShowActionSheetCommand
|
||||||
|
- (void)executeWithCommandContext:(id)_context handler:(id)_handler {
|
||||||
|
if (!ytlBool(@"nativeShare"))
|
||||||
|
return %orig;
|
||||||
|
|
||||||
|
if (!self.hasOnAppear)
|
||||||
|
return %orig;
|
||||||
|
GPBExtensionDescriptor *innertubeCommandDescriptor = [%c(YTIInnertubeCommandExtensionRoot) innertubeCommand];
|
||||||
|
if (![self.onAppear hasExtension:innertubeCommandDescriptor])
|
||||||
|
return %orig;
|
||||||
|
YTICommand *innertubeCommand = [self.onAppear getExtension:innertubeCommandDescriptor];
|
||||||
|
GPBExtensionDescriptor *updateShareSheetCommandDescriptor = [%c(YTIUpdateShareSheetCommand) updateShareSheetCommand];
|
||||||
|
if(![innertubeCommand hasExtension:updateShareSheetCommandDescriptor])
|
||||||
|
return %orig;
|
||||||
|
YTIUpdateShareSheetCommand *updateShareSheetCommand = [innertubeCommand getExtension:updateShareSheetCommandDescriptor];
|
||||||
|
if (!updateShareSheetCommand.hasSerializedShareEntity)
|
||||||
|
return %orig;
|
||||||
|
|
||||||
|
GPBMessage *shareEntity = [%c(GPBMessage) deserializeFromString:updateShareSheetCommand.serializedShareEntity];
|
||||||
|
GPBUnknownFieldSet *fields = shareEntity.unknownFields;
|
||||||
|
NSString *shareUrl;
|
||||||
|
|
||||||
|
if ([fields hasField:ShareEntityFieldClip]) {
|
||||||
|
GPBUnknownField *shareEntityClip = [fields getField:ShareEntityFieldClip];
|
||||||
|
if ([shareEntityClip.lengthDelimitedList count] != 1)
|
||||||
|
return %orig;
|
||||||
|
GPBMessage *clipMessage = [%c(GPBMessage) parseFromData:[shareEntityClip.lengthDelimitedList firstObject] error:nil];
|
||||||
|
shareUrl = extractIdWithFormat(clipMessage.unknownFields, 1, @"https://youtube.com/clip/%@");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!shareUrl)
|
||||||
|
shareUrl = extractIdWithFormat(fields, ShareEntityFieldChannel, @"https://youtube.com/channel/%@");
|
||||||
|
|
||||||
|
if (!shareUrl) {
|
||||||
|
shareUrl = extractIdWithFormat(fields, ShareEntityFieldPlaylist, @"%@");
|
||||||
|
if (shareUrl) {
|
||||||
|
if (![shareUrl hasPrefix:@"PL"] && ![shareUrl hasPrefix:@"FL"])
|
||||||
|
shareUrl = [shareUrl stringByAppendingString:@"&playnext=1"];
|
||||||
|
shareUrl = [@"https://youtube.com/playlist?list=" stringByAppendingString:shareUrl];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!shareUrl)
|
||||||
|
shareUrl = extractIdWithFormat(fields, ShareEntityFieldVideo, @"https://youtube.com/watch?v=%@");
|
||||||
|
|
||||||
|
if (!shareUrl)
|
||||||
|
return %orig;
|
||||||
|
|
||||||
|
UIActivityViewController *activityViewController = [[UIActivityViewController alloc]initWithActivityItems:@[shareUrl] applicationActivities:nil];
|
||||||
|
[[%c(YTUIUtils) topViewControllerForPresenting] presentViewController:activityViewController animated:YES completion:^{}];
|
||||||
|
}
|
||||||
|
%end
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
#import "../YouTubeHeader/YTAlertView.h"
|
||||||
|
#import "../YouTubeHeader/YTIGuideResponse.h"
|
||||||
|
#import "../YouTubeHeader/YTIGuideResponseSupportedRenderers.h"
|
||||||
|
#import "../YouTubeHeader/YTIPivotBarSupportedRenderers.h"
|
||||||
|
#import "../YouTubeHeader/YTIPivotBarRenderer.h"
|
||||||
|
#import "../YouTubeHeader/YTIBrowseRequest.h"
|
||||||
|
#import "../YouTubeHeader/YTISectionListRenderer.h"
|
||||||
|
#import "../YouTubeHeader/YTQTMButton.h"
|
||||||
|
#import "../YouTubeHeader/YTIButtonRenderer.h"
|
||||||
|
#import "../YouTubeHeader/YTVideoQualitySwitchOriginalController.h"
|
||||||
|
#import "../YouTubeHeader/YTWatchController.h"
|
||||||
|
#import "../YouTubeHeader/YTPlayerOverlay.h"
|
||||||
|
#import "../YouTubeHeader/YTPlayerOverlayProvider.h"
|
||||||
|
#import "../YouTubeHeader/YTSettingsViewController.h"
|
||||||
|
#import "../YouTubeHeader/YTSettingsSectionItem.h"
|
||||||
|
#import "../YouTubeHeader/YTSettingsSectionItemManager.h"
|
||||||
|
#import "../YouTubeHeader/YTSettingsPickerViewController.h"
|
||||||
|
#import "../YouTubeHeader/YTUIUtils.h"
|
||||||
|
#import "../YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h"
|
||||||
|
#import "../YouTubeHeader/YTToastResponderEvent.h"
|
||||||
|
#import "../YouTubeHeader/YTPageStyleController.h"
|
||||||
|
#import "../YouTubeHeader/ASCollectionElement.h"
|
||||||
|
#import "../YouTubeHeader/ASCollectionView.h"
|
||||||
|
#import "../YouTubeHeader/ELMNodeController.h"
|
||||||
@@ -7,3 +7,5 @@ Description: Lightweight YouTube Enhancer
|
|||||||
Maintainer: dvntm
|
Maintainer: dvntm
|
||||||
Author: dvntm
|
Author: dvntm
|
||||||
Section: Tweaks
|
Section: Tweaks
|
||||||
|
Icon: https://raw.githubusercontent.com/dayanch96/icons/main/ytlite.png
|
||||||
|
SileoDepiction: https://raw.githubusercontent.com/dayanch96/icons/main/ytlite.json
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 6.7 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 8.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 8.3 KiB |
@@ -1,8 +1,14 @@
|
|||||||
"General" = "General";
|
"Downloading" = "Downloading";
|
||||||
"RemoveAds" = "Remove ads";
|
"DownloadManager" = "Download manager";
|
||||||
"RemoveAdsDesc" = "Removes in-app ads.";
|
"DownloadManagerDesc" = "Replaces 'Download' button action under the player with a Download Manager, which allows downloading Video, Audio, Thumbnail Image, and Copying Video Information.\n\nTo download 2K+ videos, enable YTUHD tweak.";
|
||||||
"BackgroundPlayback" = "Background playback";
|
"DownloadManagerYtl" = "Add as YouTube Plus button";
|
||||||
"BackgroundPlaybackDesc" = "Enables background playback.";
|
"DownloadManagerYtlDesc" = "Adds YouTube Plus button for download manager under the player.";
|
||||||
|
"PostManager" = "Save post information";
|
||||||
|
"PostManagerDesc" = "Allows to copy post text and save post as image by long tap.";
|
||||||
|
"SaveProfilePhoto" = "Save profile picture";
|
||||||
|
"SaveProfilePhotoDesc" = "Saves profile picture to the Photos app by long tap.";
|
||||||
|
"CommentManager" = "Save comment information";
|
||||||
|
"CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
|
||||||
|
|
||||||
"Navbar" = "Navigation bar";
|
"Navbar" = "Navigation bar";
|
||||||
"RemoveCast" = "Hide Cast button";
|
"RemoveCast" = "Hide Cast button";
|
||||||
@@ -13,20 +19,39 @@
|
|||||||
"RemoveSearchDesc" = "Hides Search button from the Navigation bar.";
|
"RemoveSearchDesc" = "Hides Search button from the Navigation bar.";
|
||||||
"RemoveVoiceSearch" = "Hide Voice search button";
|
"RemoveVoiceSearch" = "Hide Voice search button";
|
||||||
"RemoveVoiceSearchDesc" = "Hides Voice search button from the Navigation bar.";
|
"RemoveVoiceSearchDesc" = "Hides Voice search button from the Navigation bar.";
|
||||||
|
"RemoveSponsorBlock" = "Hide SponsorBlock button";
|
||||||
|
"RemoveSponsorBlockDesc" = "Hides SponsorBlock button from the Navigation bar.";
|
||||||
"StickyNavbar" = "Sticky Navigation bar";
|
"StickyNavbar" = "Sticky Navigation bar";
|
||||||
"StickyNavbarDesc" = "Pins the Navigation bar so that it remains visible when scrolling down.";
|
"StickyNavbarDesc" = "Pins the Navigation bar so that it remains visible when scrolling down.";
|
||||||
"NoSubbar" = "Hide Subbar";
|
"NoSubbar" = "Hide Subbar";
|
||||||
"NoSubbarDesc" = "Hides Subbar (All, New to you, Live etc.) under the Navigation bar.";
|
"NoSubbarDesc" = "Hides Subbar (All, New to you, Live etc.) under the Navigation bar.";
|
||||||
"NoYTLogo" = "Remove YouTube logo";
|
"NoYTLogo" = "Remove YouTube logo";
|
||||||
"NoYTLogoDesc" = "Removes YouTube logo in the Navigation bar.";
|
"NoYTLogoDesc" = "Removes YouTube logo in the Navigation bar.";
|
||||||
|
"PremiumYTLogo" = "Set Premium YouTube logo";
|
||||||
|
"PremiumYTLogoDesc" = "Sets Premium YouTube logo in the Navigation bar.";
|
||||||
|
|
||||||
"Overlay" = "Overlay";
|
"Feed" = "Feed";
|
||||||
|
"RemoveAds" = "Remove ads";
|
||||||
|
"RemoveAdsDesc" = "Removes in-app ads.";
|
||||||
|
"HideShorts" = "Hide Shorts videos";
|
||||||
|
"HideShortsDesc" = "Hides Shorts videos from Homepage, Recommended etc.";
|
||||||
|
"KeepSubsShorts" = "Keep Shorts in Subscriptions";
|
||||||
|
"KeepSubsShortsDesc" = "Prevents removing Shorts from Subscriptions tab.";
|
||||||
|
"RemoveCommunityPosts" = "Remove community posts";
|
||||||
|
"RemoveCommunityPostsDesc" = "Removes community posts from the feed.";
|
||||||
|
"RemoveMoreTopics" = "Remove \"More topics\"";
|
||||||
|
"RemoveMoreTopicsDesc" = "Removes \"More topics\" from the feed.";
|
||||||
|
"FixAlbums" = "Fix covers";
|
||||||
|
"FixAlbumsDesc" = "Fixes the display of covers for users from Russia.";
|
||||||
|
|
||||||
|
"Player" = "Player";
|
||||||
|
"Player.Overlay" = "Overlay";
|
||||||
|
"SpeedControls" = "Speed controls";
|
||||||
|
"SpeedControlsDesc" = "Shows speed control buttons on overlay";
|
||||||
"HideAutoplay" = "Hide Autoplay switch";
|
"HideAutoplay" = "Hide Autoplay switch";
|
||||||
"HideAutoplayDesc" = "Hides Autoplay switch from the overlay.";
|
"HideAutoplayDesc" = "Hides Autoplay switch from the overlay.";
|
||||||
"HideSubs" = "Hide Subtitles button";
|
"HideSubs" = "Hide Subtitles button";
|
||||||
"HideSubsDesc" = "Hides Subtitles button from the overlay.";
|
"HideSubsDesc" = "Hides Subtitles button from the overlay.";
|
||||||
"NoHUDMsgs" = "Hide HUD Messages";
|
|
||||||
"NoHUDMsgsDesc" = "Hides all feature messages from the player. Example: CC is turned on/off, Video loop is on, etc.";
|
|
||||||
"HidePrevNext" = "Hide Previous and Next buttons";
|
"HidePrevNext" = "Hide Previous and Next buttons";
|
||||||
"HidePrevNextDesc" = "Hides Previous and Next video buttons from overlay.";
|
"HidePrevNextDesc" = "Hides Previous and Next video buttons from overlay.";
|
||||||
"ReplacePrevNext" = "Fast forward and Rewind buttons";
|
"ReplacePrevNext" = "Fast forward and Rewind buttons";
|
||||||
@@ -35,49 +60,108 @@
|
|||||||
"NoDarkBgDesc" = "Removes overlay dark background.";
|
"NoDarkBgDesc" = "Removes overlay dark background.";
|
||||||
"NoEndScreenCards" = "Hide End screens hover cards";
|
"NoEndScreenCards" = "Hide End screens hover cards";
|
||||||
"NoEndScreenCardsDesc" = "Hides End screens (thumbnails) at the end of videos.";
|
"NoEndScreenCardsDesc" = "Hides End screens (thumbnails) at the end of videos.";
|
||||||
|
"NoAutonavEndScreenCards" = "Hide auto-play end screen";
|
||||||
|
"NoAutonavEndScreenCardsDesc" = "Hides the screen that shows what you can play next after playback ended. Disabling this option also disables auto-play";
|
||||||
"NoFullscreenActions" = "Disable fullscreen actions";
|
"NoFullscreenActions" = "Disable fullscreen actions";
|
||||||
"NoFullscreenActionsDesc" = "Disables actions panel in fullscreen mode.";
|
"NoFullscreenActionsDesc" = "Disables actions panel in fullscreen mode.";
|
||||||
"PersistentProgressBar" = "Persistent progress bar";
|
"PersistentProgressBar" = "Persistent progress bar";
|
||||||
"PersistentProgressBarDesc" = "Always shows progress bar in the player.";
|
"PersistentProgressBarDesc" = "Always shows progress bar in the player.";
|
||||||
|
"StockVolumeHUD" = "Stock volume HUD";
|
||||||
|
"StockVolumeHUDDesc" = "Displays system volume HUD in fullscreen.";
|
||||||
"NoRelatedVids" = "No related videos in overlay";
|
"NoRelatedVids" = "No related videos in overlay";
|
||||||
"NoRelatedVidsDesc" = "Removes related videos displayed in the overlay by swiping up.";
|
"NoRelatedVidsDesc" = "Removes related videos displayed in the overlay by swiping up.";
|
||||||
"NoPromotionCards" = "Hide Paid Promotion cards";
|
"NoPromotionCards" = "Hide Paid Promotion cards";
|
||||||
"NoPromotionCardsDesc" = "Hides \"Includes Paid Promotions\" card in promotions included videos.";
|
"NoPromotionCardsDesc" = "Hides \"Includes Paid Promotions\" card in promotions included videos.";
|
||||||
"NoWatermarks" = "Hide Watermarks";
|
"NoWatermarks" = "Hide Watermarks";
|
||||||
"NoWatermarksDesc" = "Hides channel watermarks from the player.";
|
"NoWatermarksDesc" = "Hides channel watermarks from the player.";
|
||||||
|
"VideoEndTime" = "Show playback end time";
|
||||||
|
"VideoEndTimeDesc" = "Adds video playback end time to the player bar.";
|
||||||
|
"24hrFormat" = "24-hour format";
|
||||||
|
"24hrFormatDesc" = "Shows end time in 24-hour format.";
|
||||||
|
|
||||||
"Player" = "Player";
|
"Player.Interface" = "Interface";
|
||||||
"Miniplayer" = "Enable mini player";
|
|
||||||
"MiniplayerDesc" = "Enables the mini player for videos that were not originally designed for it, such as videos targeted for children.";
|
|
||||||
"PortraitFullscreen" = "Portrait fullscreen mode";
|
"PortraitFullscreen" = "Portrait fullscreen mode";
|
||||||
"PortraitFullscreenDesc" = "Enables portrait fullscreen mode support.";
|
"PortraitFullscreenDesc" = "Enables portrait fullscreen mode support.";
|
||||||
"CopyWithTimestamp" = "Copy timestamped links";
|
"ClassicQuality" = "Classic video quality";
|
||||||
"CopyWithTimestampDesc" = "Allows to copy timestamped link to the clipboard by pressing pause button.";
|
"ClassicQualityDesc" = "Brings back classic video quality selection menu.";
|
||||||
"DisableAutoplay" = "Disable Autoplay videos";
|
"ExtraSpeedOptions" = "Extra speed options";
|
||||||
|
"ExtraSpeedOptionsDesc" = "Adds more video playback speed options to the player menu.";
|
||||||
|
"RedProgressBar" = "Red progress bar";
|
||||||
|
"RedProgressBarDesc" = "Brings back red progress bar.";
|
||||||
|
"NoPlayerRemixButton" = "Remove remix button";
|
||||||
|
"NoPlayerRemixButtonDesc" = "Removes remix button under the player.";
|
||||||
|
"NoPlayerClipButton" = "Remove clip button";
|
||||||
|
"NoPlayerClipButtonDesc" = "Removes clip button under the player.";
|
||||||
|
"NoPlayerDownloadButton" = "Remove download button";
|
||||||
|
"NoPlayerDownloadButtonDesc" = "Removes download button under the player.";
|
||||||
|
|
||||||
|
"Player.Actions" = "Actions";
|
||||||
|
"BackgroundPlayback" = "Background playback";
|
||||||
|
"BackgroundPlaybackDesc" = "Enables background playback.";
|
||||||
|
"Miniplayer" = "Enable mini player";
|
||||||
|
"MiniplayerDesc" = "Enables the mini player for videos that were not originally designed for it, such as videos targeted for children.";
|
||||||
|
"DisableAutoplay" = "Disable autoplay videos";
|
||||||
"DisableAutoplayDesc" = "Prevents video playback after opening.";
|
"DisableAutoplayDesc" = "Prevents video playback after opening.";
|
||||||
"DisableAutoCaptions" = "Disable auto captions";
|
"DisableAutoCaptions" = "Disable auto captions";
|
||||||
"DisableAutoCaptionsDesc" = "Prevents automatic activation of captions.";
|
"DisableAutoCaptionsDesc" = "Prevents automatic activation of captions.";
|
||||||
"NoContentWarning" = "Skip content warning";
|
"NoContentWarning" = "Skip content warning";
|
||||||
"NoContentWarningDesc" = "Skips sensitive content warning message.";
|
"NoContentWarningDesc" = "Skips sensitive content warning message.";
|
||||||
"ClassicQuality" = "Classic video quality";
|
|
||||||
"ClassicQualityDesc" = "Brings back classic video quality selection menu.";
|
|
||||||
"ExtraSpeedOptions" = "Extra speed options";
|
|
||||||
"ExtraSpeedOptionsDesc" = "Adds more video playback speed options to the player menu.";
|
|
||||||
"DontSnap2Chapter" = "Disable snap to chapter";
|
|
||||||
"DontSnap2ChapterDesc" = "Disables skipping to the next episode by double-tap gesture.";
|
|
||||||
"RedProgressBar" = "Red progress bar";
|
|
||||||
"RedProgressBarDesc" = "Brings back red progress bar.";
|
|
||||||
"NoHints" = "Disable hints";
|
"NoHints" = "Disable hints";
|
||||||
"NoHintsDesc" = "Disables hints by author which appears at the top-right corner during playback.";
|
"NoHintsDesc" = "Disables hints by author which appears at the top-right corner during playback.";
|
||||||
"NoFreeZoom" = "Disable free zoom gesture";
|
|
||||||
"NoFreeZoomDesc" = "Disables new free zoom gestures.";
|
|
||||||
"AutoFullscreen" = "Play videos in fullscreen";
|
"AutoFullscreen" = "Play videos in fullscreen";
|
||||||
"AutoFullscreenDesc" = "Automatically plays videos in fullscreen mode.";
|
"AutoFullscreenDesc" = "Automatically plays videos in fullscreen mode.";
|
||||||
"ExitFullscreen" = "Exit fullscreen mode on finish";
|
"ExitFullscreen" = "Exit fullscreen mode on finish";
|
||||||
"ExitFullscreenDesc" = "Exits fullscreen mode at the end of video playback.";
|
"ExitFullscreenDesc" = "Exits fullscreen mode at the end of video playback.";
|
||||||
|
|
||||||
|
"Player.Gestures" = "Gestures";
|
||||||
|
"AdjustWithFinger" = "Adjust speed by gestures";
|
||||||
|
"AdjustWithFingerDesc" = "Allows adjusting playback speed by long press on player and moving finger up and down";
|
||||||
|
"PreserveSpeed" = "Preserve Speed";
|
||||||
|
"PreserveSpeedDesc" = "Preserves adjusted speed after gesture completion";
|
||||||
|
"TwoFingerTapToPause" = "Pause using two fingers";
|
||||||
|
"TwoFingerTapToPauseDesc" = "Pause/Resume playback by tapping on the screen using two fingers.";
|
||||||
|
"TwoFingerPanToBrightness" = "Adjust brightness";
|
||||||
|
"TwoFingerPanToBrightnessDesc" = "Allows adjusting screen brigthness by sliding up/down using two fingers.";
|
||||||
|
"CopyWithTimestamp" = "Copy timestamped links";
|
||||||
|
"CopyWithTimestampDesc" = "Allows to copy timestamped link to the clipboard by pressing pause button.";
|
||||||
|
"PauseOnOverlay" = "Pause on overlay";
|
||||||
|
"PauseOnOverlayDesc" = "Sets playback on pause if overlay appears.";
|
||||||
|
"DontSnap2Chapter" = "Disable snap to chapter";
|
||||||
|
"DontSnap2ChapterDesc" = "Disables skipping to the next episode by double-tap gesture.";
|
||||||
|
"NoTwoFingerSnapToChapter" = "Disable two finger double tap";
|
||||||
|
"NoTwoFingerSnapToChapterDesc" = "Disables two finger double tap snap to chapter gesture.";
|
||||||
|
"NoFreeZoom" = "Disable free zoom gesture";
|
||||||
|
"NoFreeZoomDesc" = "Disables new free zoom gestures.";
|
||||||
"NoDoubleTap2Seek" = "Disable double tap to seek";
|
"NoDoubleTap2Seek" = "Disable double tap to seek";
|
||||||
"NoDoubleTap2SeekDesc" = "Disables double tap to seek gesture.";
|
"NoDoubleTap2SeekDesc" = "Disables double tap to seek gesture.";
|
||||||
|
|
||||||
|
"Shorts" = "Shorts";
|
||||||
|
"ShortsOnlyMode" = "Shorts Only Mode";
|
||||||
|
"ShortsOnlyModeDesc" = "Limits YouTube functionality to viewing Shorts only.";
|
||||||
|
"AutoSkipShorts" = "Auto-skip Shorts";
|
||||||
|
"AutoSkipShortsDesc" = "Moves to the next video when the current video playback finishes.";
|
||||||
|
"ShortsProgress" = "Enable progress bar";
|
||||||
|
"ShortsProgressDesc" = "Displays progress bar in the Shorts overlay.";
|
||||||
|
"SpeedByLongTap" = "Increase Shorts playback rate";
|
||||||
|
"SpeedByLongTapDesc" = "Allows to speed up playback by long pressing on a certain part of the screen.";
|
||||||
|
"SpeedLocation" = "Activation location";
|
||||||
|
"LeftSide" = "Left side";
|
||||||
|
"RightSide" = "Right side";
|
||||||
|
"PinchToFullscreenShorts" = "Pinch to Fullscreen";
|
||||||
|
"PinchToFullscreenShortsDesc" = "Manages visibility of the overlay with pinch in and pinch out gestures, displaying Shorts in fullscreen mode.";
|
||||||
|
"ShortsToRegular" = "Shorts to regular videos";
|
||||||
|
"ShortsToRegularDesc" = "Opens Shorts videos as regular videos.";
|
||||||
|
"HideShortsLogo" = "Hide Shorts logo";
|
||||||
|
"HideShortsLogoDesc" = "Hides Shorts logo in the top left corner.";
|
||||||
|
"HideShortsSearch" = "Hide Search button";
|
||||||
|
"HideShortsSearchDesc" = "Hides Search button from the Shorts overlay.";
|
||||||
|
"HideShortsCamera" = "Hide Camera button";
|
||||||
|
"HideShortsCameraDesc" = "Hides Camera button from the Shorts overlay.";
|
||||||
|
"HideShortsMore" = "Hide More (⋮) button";
|
||||||
|
"HideShortsMoreDesc" = "Hides More (⋮) button from the Shorts overlay. It's also accessible by long-pressing the screen.";
|
||||||
|
"HideShortsSubscriptions" = "Hide Subscriptions button";
|
||||||
|
"HideShortsSubscriptionsDesc" = "Hides Subscriptions button which appears when Shorts paused.";
|
||||||
|
|
||||||
"Tabbar" = "Tab bar";
|
"Tabbar" = "Tab bar";
|
||||||
"RemoveLabels" = "Remove labels";
|
"RemoveLabels" = "Remove labels";
|
||||||
"RemoveLabelsDesc" = "Removes tab labels.";
|
"RemoveLabelsDesc" = "Removes tab labels.";
|
||||||
@@ -94,69 +178,31 @@
|
|||||||
"HideUploadButton" = "Hide Upload button";
|
"HideUploadButton" = "Hide Upload button";
|
||||||
"HideUploadButtonDesc" = "Hides Upload button from the Tab bar.";
|
"HideUploadButtonDesc" = "Hides Upload button from the Tab bar.";
|
||||||
"HideLibraryTab" = "Hide Library tab";
|
"HideLibraryTab" = "Hide Library tab";
|
||||||
"HideLibraryTabDesc" = "Hides Library tab from the Tab bar.";
|
"HideLibraryTabDesc" = "Hides Library tab from the Tab bar.\n\nThis tab can be restored by long pressing Home tab.";
|
||||||
|
|
||||||
"Shorts" = "Shorts";
|
"Interface" = "Interface";
|
||||||
"ShortsOnlyMode" = "Shorts Only Mode";
|
"OledTheme" = "Oled theme";
|
||||||
"ShortsOnlyModeDesc" = "Limits YouTube functionality to viewing Shorts only.";
|
"OledThemeDesc" = "Turns all dark colors to black";
|
||||||
"HideShorts" = "Hide Shorts videos";
|
"NativeShare" = "Native share sheet";
|
||||||
"HideShortsDesc" = "Hides Shorts videos from Homepage, Recommended etc. (Not applied to Watch history)";
|
"NativeShareDesc" = "Uses system share sheet to share media";
|
||||||
"ShortsProgress" = "Enable progress bar";
|
"RemoveInlineComment" = "Remove inline comment";
|
||||||
"ShortsProgressDesc" = "Displays progress bar in the Shorts overlay.";
|
"RemoveInlineCommentDesc" = "Removes comment section under the player.";
|
||||||
"PinchToFullscreenShorts" = "Pinch to Fullscreen";
|
|
||||||
"PinchToFullscreenShortsDesc" = "Manages visibility of the overlay with pinch in and pinch out gestures, displaying Shorts in fullscreen mode.";
|
|
||||||
"ShortsToRegular" = "Shorts to regular videos";
|
|
||||||
"ShortsToRegularDesc" = "Opens Shorts videos as regular videos.";
|
|
||||||
"ResumeShorts" = "Don't start from Shorts tab";
|
|
||||||
"ResumeShortsDesc" = "Prevents starting from Shorts videos at the opening app, which happens if YouTube was closed while watching Shorts.";
|
|
||||||
"HideShortsLogo" = "Hide Shorts logo";
|
|
||||||
"HideShortsLogoDesc" = "Hides Shorts logo in the top left corner.";
|
|
||||||
"HideShortsSearch" = "Hide Search button";
|
|
||||||
"HideShortsSearchDesc" = "Hides Search button from the Shorts overlay.";
|
|
||||||
"HideShortsCamera" = "Hide Camera button";
|
|
||||||
"HideShortsCameraDesc" = "Hides Camera button from the Shorts overlay.";
|
|
||||||
"HideShortsMore" = "Hide More (⋮) button";
|
|
||||||
"HideShortsMoreDesc" = "Hides More (⋮) button from the Shorts overlay. It's also accessible by long-pressing the screen.";
|
|
||||||
"HideShortsSubscriptions" = "Hide Subscriptions button";
|
|
||||||
"HideShortsSubscriptionsDesc" = "Hides Subscriptions button which appears when Shorts paused.";
|
|
||||||
"HideShortsLike" = "Hide Like button";
|
|
||||||
"HideShortsLikeDesc" = "Hides Like button from the Shorts overlay.";
|
|
||||||
"HideShortsDislike" = "Hide Dislike button";
|
|
||||||
"HideShortsDislikeDesc" = "Hides Dislike button from the Shorts overlay.";
|
|
||||||
"HideShortsComments" = "Hide Comments button";
|
|
||||||
"HideShortsCommentsDesc" = "Hides Comments button from the Shorts overlay.";
|
|
||||||
"HideShortsRemix" = "Hide Remix button";
|
|
||||||
"HideShortsRemixDesc" = "Hides Remix button from the Shorts overlay.";
|
|
||||||
"HideShortsShare" = "Hide Share button";
|
|
||||||
"HideShortsShareDesc" = "Hides Share button from the Shorts overlay.";
|
|
||||||
"HideShortsAvatars" = "Hide channels avatar";
|
|
||||||
"HideShortsAvatarsDesc" = "Hides profile picture in the bottom right corner.";
|
|
||||||
"HideShortsThanks" = "Hide Superthanks button";
|
|
||||||
"HideShortsThanksDesc" = "Hides Superthanks (Donate) button from the Shorts overlay.";
|
|
||||||
"HideShortsSource" = "Hide Shorts Source";
|
|
||||||
"HideShortsSourceDesc" = "Hides the Shorts sources under the channel name.";
|
|
||||||
"HideShortsChannelName" = "Hide Channel name";
|
|
||||||
"HideShortsChannelNameDesc" = "Hides Channel name and Subscribe button from the Shorts overlay.";
|
|
||||||
"HideShortsDescription" = "Hide Description";
|
|
||||||
"HideShortsDescriptionDesc" = "Hides Shorts description under channel name.";
|
|
||||||
"HideShortsAudioTrack" = "Hide AudioTrack";
|
|
||||||
"HideShortsAudioTrackDesc" = "Hides AudioTrack under Shorts description.";
|
|
||||||
|
|
||||||
"Other" = "Other";
|
|
||||||
"CopyVideoInfo" = "Copy video information";
|
|
||||||
"CopyVideoInfoDesc" = "Adds button to copy video title and description into Video Description panel.";
|
|
||||||
"PostManager" = "Save post information";
|
|
||||||
"PostManagerDesc" = "Allows to copy post text and save post as image by long tap.";
|
|
||||||
"SavePostImage" = "Save image from community posts";
|
|
||||||
"SavePostImageDesc" = "Saves community post image to the Photos app by long tap.";
|
|
||||||
"SaveProfilePhoto" = "Save profile picture";
|
|
||||||
"SaveProfilePhotoDesc" = "Saves profile picture to the Photos app by long tap.";
|
|
||||||
"CommentManager" = "Save comment information";
|
|
||||||
"CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
|
|
||||||
"FixAlbums" = "Fix covers";
|
|
||||||
"FixAlbumsDesc" = "Fixes the display of covers for users from Russia.";
|
|
||||||
"RemovePlayNext" = "Remove \"Play next in queue\"";
|
"RemovePlayNext" = "Remove \"Play next in queue\"";
|
||||||
"RemovePlayNextDesc" = "Removes \"Play next in queue\" option from menu.";
|
"RemovePlayNextDesc" = "Removes \"Play next in queue\" option from menu.";
|
||||||
|
"RemoveDownloadMenu" = "Remove \"Download\"";
|
||||||
|
"RemoveDownloadMenuDesc" = "Removes \"Download\" option from menu.";
|
||||||
|
"RemoveWatchLaterMenu" = "Remove \"Save to Watch Later\"";
|
||||||
|
"RemoveWatchLaterMenuDesc" = "Removes \"Save to Watch Later\" option from menu.";
|
||||||
|
"RemoveSaveToPlaylistMenu" = "Remove \"Save to playlist\"";
|
||||||
|
"RemoveSaveToPlaylistMenuDesc" = "Removes \"Save to playlist\" option from menu.";
|
||||||
|
"RemoveShareMenu" = "Remove \"Share\"";
|
||||||
|
"RemoveShareMenuDesc" = "Removes \"Share\" option from menu.";
|
||||||
|
"RemoveNotInterestedMenu" = "Remove \"Not interested\"";
|
||||||
|
"RemoveNotInterestedMenuDesc" = "Removes \"Not interested\" option from menu.";
|
||||||
|
"RemoveDontRecommendMenu" = "Remove \"Don't recommend channel\"";
|
||||||
|
"RemoveDontRecommendMenuDesc" = "Removes \"Don't recommend channel\" option from menu.";
|
||||||
|
"RemoveReportMenu" = "Remove \"Report\"";
|
||||||
|
"RemoveReportMenuDesc" = "Removes \"Report\" option from menu.";
|
||||||
"NoContinueWatching" = "Remove \"Continue watching\"";
|
"NoContinueWatching" = "Remove \"Continue watching\"";
|
||||||
"NoContinueWatchingDesc" = "Removes the \"Continue watching\" section containing unfinished videos from the Home page.";
|
"NoContinueWatchingDesc" = "Removes the \"Continue watching\" section containing unfinished videos from the Home page.";
|
||||||
"NoSearchHistory" = "Hide search history";
|
"NoSearchHistory" = "Hide search history";
|
||||||
@@ -169,9 +215,18 @@
|
|||||||
"HideSortCommentsDesc" = "Hides sort comments header (Top, Newest) so it will never appear.";
|
"HideSortCommentsDesc" = "Hides sort comments header (Top, Newest) so it will never appear.";
|
||||||
"PlaylistOldMinibar" = "Old playlist minibar";
|
"PlaylistOldMinibar" = "Old playlist minibar";
|
||||||
"PlaylistOldMinibarDesc" = "Replaces the new floating playlist panel with the old one.";
|
"PlaylistOldMinibarDesc" = "Replaces the new floating playlist panel with the old one.";
|
||||||
|
"StartupAnimation" = "Startup animation";
|
||||||
|
"StartupAnimationDesc" = "Displays YouTube startup loading animation";
|
||||||
|
"OldYTUI" = "Old UI";
|
||||||
|
"OldYTUIDesc" = "Spoofs YouTube version so that it will return old interface";
|
||||||
"DisableRTL" = "Disable RTL formatting";
|
"DisableRTL" = "Disable RTL formatting";
|
||||||
"DisableRTLDesc" = "Forcefully displays text in left-to-right (LTR) format for languages that are initially displayed in right-to-left (RTL).";
|
"DisableRTLDesc" = "Forcefully displays text in left-to-right (LTR) format for languages that are initially displayed in right-to-left (RTL).";
|
||||||
|
|
||||||
|
"HoldToSpeed" = "Hold to speed";
|
||||||
|
"DefaultPlaybackRate" = "Default playback rate";
|
||||||
|
"PlaybackQualityOnWiFi" = "Playback quality on WiFi";
|
||||||
|
"PlaybackQualityOnCellular" = "Playback quality on Cellular";
|
||||||
|
|
||||||
"Startup" = "Startup page";
|
"Startup" = "Startup page";
|
||||||
"Home" = "Home";
|
"Home" = "Home";
|
||||||
"Explore" = "Explore";
|
"Explore" = "Explore";
|
||||||
@@ -181,12 +236,17 @@
|
|||||||
"Warning" = "Warning";
|
"Warning" = "Warning";
|
||||||
"TabIsHidden" = "Hidden tab cannot be selected as startup page";
|
"TabIsHidden" = "Hidden tab cannot be selected as startup page";
|
||||||
|
|
||||||
"DonateViaPayPal" = "Donate via PayPal";
|
"SupportDevelopment" = "Support development";
|
||||||
"SupportViaGhSponsors" = "Support development via Github Sponsors";
|
"SupportDevelopmentDesc" = "If you like YTLite and would like to support its development, you can do it using any of convenient ways below.\nThanks❤";
|
||||||
|
"Contributors" = "Contributors";
|
||||||
|
"OpenSourceLibs" = "Open Source Libraries";
|
||||||
|
"Preferences" = "%@ preferences";
|
||||||
"Version" = "Version";
|
"Version" = "Version";
|
||||||
"About" = "About";
|
"About" = "About";
|
||||||
"Credits" = "Credits";
|
"Credits" = "Credits";
|
||||||
"Developer" = "YTLite developer";
|
"Developer" = "YTLite developer";
|
||||||
|
"SpecialThanks" = "Special thanks";
|
||||||
|
"SpecialThanks.Test" = "Invaluable contribution to tweak testing";
|
||||||
"ChineseSimplified" = "Chinese (Simplified) localization";
|
"ChineseSimplified" = "Chinese (Simplified) localization";
|
||||||
"ChineseTraditional" = "Chinese (Traditional) localization";
|
"ChineseTraditional" = "Chinese (Traditional) localization";
|
||||||
"French" = "French localization";
|
"French" = "French localization";
|
||||||
@@ -194,26 +254,91 @@
|
|||||||
"Japanese" = "Japanese localization";
|
"Japanese" = "Japanese localization";
|
||||||
"Vietnamese" = "Vietnamese localization";
|
"Vietnamese" = "Vietnamese localization";
|
||||||
"Advanced" = "Advanced mode";
|
"Advanced" = "Advanced mode";
|
||||||
|
"AdvancedDesc" = "More customizable mode";
|
||||||
|
"AdvancedModeEnabled" = "Advanced mode has been enabled";
|
||||||
|
"AdvancedModeDisabled" = "Advanced mode has been disabled";
|
||||||
"AdvancedModeReminder" = "Would you like to activate Advanced mode for YTLite?\n\nThis mode provides more than 50 additional options to customize and optimize your YouTube experience. You can enable/disable it later from Settings → %@ → %@ → %@.";
|
"AdvancedModeReminder" = "Would you like to activate Advanced mode for YTLite?\n\nThis mode provides more than 50 additional options to customize and optimize your YouTube experience. You can enable/disable it later from Settings → %@ → %@ → %@.";
|
||||||
"ClearCache" = "Clear cache";
|
"ClearCache" = "Clear cache";
|
||||||
"ResetSettings" = "Reset YTLite settings";
|
"ClearCacheMessage" = "You're about to clear %@ of cache.\n\nDo you want to continue?";
|
||||||
"ResetMessage" = "This option will reset YTLite settings to default and close YouTube.\n\nAre you sure you want to continue?";
|
"ImportPreferences" = "Import preferences";
|
||||||
|
"PreImportMessage" = "This action will replace the current preferences with those from the selected file.\n\nAre you sure you want to continue?";
|
||||||
|
"ExportPreferences" = "Export preferences";
|
||||||
|
"ResetSettings" = "Restore default settings";
|
||||||
|
"ResetMessage" = "This action will reset YTLite settings to default and close YouTube.\n\nAre you sure you want to continue?";
|
||||||
"ShortsOnlyWarning" = "Are you sure you want to activate this mode?\n\nIn this mode, you will only be able to watch Shorts videos and won't be able to do anything else.\n\nYou can disable Shorts Only Mode by long pressing with two fingers in the Shorts player.";
|
"ShortsOnlyWarning" = "Are you sure you want to activate this mode?\n\nIn this mode, you will only be able to watch Shorts videos and won't be able to do anything else.\n\nYou can disable Shorts Only Mode by long pressing with two fingers in the Shorts player.";
|
||||||
"ShortsModeTurnedOff" = "Shorts Only Mode has been turned off";
|
"ShortsModeTurnedOff" = "Shorts Only Mode has been turned off";
|
||||||
|
"LibraryAdded" = "The You/Library tab has been restored";
|
||||||
|
"LibraryRemoved" = "The You/Library tab has been removed";
|
||||||
"Yes" = "Yes";
|
"Yes" = "Yes";
|
||||||
"No" = "No";
|
"No" = "No";
|
||||||
|
|
||||||
|
"Select" = "Select";
|
||||||
|
"Default" = "Default";
|
||||||
|
"Best" = "Best";
|
||||||
|
"Show" = "Show";
|
||||||
|
"Disable" = "Disable";
|
||||||
|
"Disabled" = "Disabled";
|
||||||
|
"PlaybackSpeed" = "Playback Speed";
|
||||||
|
"SpeedPreserved" = "Speed preserved";
|
||||||
|
"ResetSpeed" = "Reset";
|
||||||
|
|
||||||
|
"Brightness" = "Brightness";
|
||||||
|
"Toast.PlaybackSpeed" = "Playback Speed";
|
||||||
|
|
||||||
"SelectAction" = "Select action";
|
"SelectAction" = "Select action";
|
||||||
|
"DownloadVideo" = "Download video";
|
||||||
|
"DownloadAudio" = "Download audio";
|
||||||
|
"SaveImage" = "Save image";
|
||||||
|
"CopyInformation" = "Copy information";
|
||||||
|
"CopyChannelName" = "Copy channel name";
|
||||||
"CopyTitle" = "Copy title";
|
"CopyTitle" = "Copy title";
|
||||||
"CopyDescription" = "Copy description";
|
"CopyDescription" = "Copy description";
|
||||||
|
"CopyTimestampedLink" = "Copy link with timestamp";
|
||||||
|
"PlayInExternalPlayer" = "Play in external player";
|
||||||
|
"PlayInSystemPlayer" = "Play in system player";
|
||||||
|
"PlayInInfuse" = "Play in Infuse";
|
||||||
|
"PlayInVLC" = "Play in VLC";
|
||||||
|
"PlayerNotFound" = "Player not found";
|
||||||
|
"OpenAsRegularVideo" = "Open as regular video";
|
||||||
"CopyPostText" = "Copy post text";
|
"CopyPostText" = "Copy post text";
|
||||||
|
"SaveCurrentImage" = "Save current image";
|
||||||
|
"CopyCurrentImage" = "Copy current image";
|
||||||
"SavePostAsImage" = "Save post as image";
|
"SavePostAsImage" = "Save post as image";
|
||||||
"CopyPostAsImage" = "Copy post as image";
|
"CopyPostAsImage" = "Copy post as image";
|
||||||
"CopyCommentText" = "Copy comment text";
|
"CopyCommentText" = "Copy comment text";
|
||||||
"SaveCommentAsImage" = "Save comment as image";
|
"SaveCommentAsImage" = "Save comment as image";
|
||||||
"CopyCommentAsImage" = "Copy comment as image";
|
"CopyCommentAsImage" = "Copy comment as image";
|
||||||
|
"SaveProfilePicture" = "Save profile picture";
|
||||||
|
"CopyProfilePicture" = "Copy profile picture";
|
||||||
|
"DownloadThumbnail" = "Save thumbnail";
|
||||||
|
"CopyThumbnail" = "Copy thumbnail";
|
||||||
"Cancel" = "Cancel";
|
"Cancel" = "Cancel";
|
||||||
|
"Cancelled" = "Cancelled";
|
||||||
"Copied" = "Copied to clipboard";
|
"Copied" = "Copied to clipboard";
|
||||||
"Saved" = "Saved to Photos";
|
"Saved" = "Saved to Photos";
|
||||||
"Done" = "Done";
|
"Done" = "Done";
|
||||||
"Error" = "Error";
|
"Error" = "Error";
|
||||||
|
"Error.Clipboard" = "Error. Check clipboard for more info";
|
||||||
|
"Error.PathIssue" = "Error. Problem with generating final path. Issue with media title?";
|
||||||
|
"Error.NoSpace" = "Insufficient space on the device.\n\nAt least %@ additional free space is required. Available free space: %@";
|
||||||
|
"Error.Multidownloading" = "Multi-downloading not available yet.";
|
||||||
|
"Error.FailedToImport" = "Failed to import preferences";
|
||||||
|
"DownloadingVideo" = "Downloading video";
|
||||||
|
"DownloadingAudio" = "Downloading audio";
|
||||||
|
"Converting" = "Converting";
|
||||||
|
"RetryLogin" = "Workaround activated.\n\nPlease try again.";
|
||||||
|
"LoginInfo" = "App restart required after successful signing into Google account";
|
||||||
|
|
||||||
|
"Welcome.Download" = "Download Media";
|
||||||
|
"Welcome.DownloadDesc" = "Download your favorite content, whether it's Videos, Shorts, Audio, or Profile photos. Copy interesting posts and comments or save them as images";
|
||||||
|
"Welcome.Content" = "Adjust Interface";
|
||||||
|
"Welcome.ContentDesc" = "Remove unwanted content and interface elements. Enable true OLED dark mode";
|
||||||
|
"Welcome.Player" = "Setup Player Behavior";
|
||||||
|
"Welcome.PlayerDesc" = "Сustomize the player's behavior, auto-select quality and playback speed. Control using gestures";
|
||||||
|
"Welcome.More" = "And even more...";
|
||||||
|
"Welcome.MoreDesc" = "YouTube Plus includes over 50 different options, including features like saving preferences and clearing cache. Settings are available in the YouTube Plus section under YouTube settings";
|
||||||
|
"SupportMe" = "Support me";
|
||||||
|
"Continue" = "Continue";
|
||||||
|
|
||||||
|
"DonationReminder" = "Your support makes YTPlus better... Support through tweak settings";
|
||||||
|
"DontRemind" = "Turn off";
|
||||||
@@ -1,219 +1,344 @@
|
|||||||
"General" = "General";
|
"Downloading" = "Downloading";
|
||||||
"RemoveAds" = "Eliminar anuncios";
|
"DownloadManager" = "Download manager";
|
||||||
"RemoveAdsDesc" = "Elimina los anuncios dentro de la aplicación.";
|
"DownloadManagerDesc" = "Replaces 'Download' button action under the player with a Download Manager, which allows downloading Video, Audio, Thumbnail Image, and Copying Video Information.\n\nTo download 2K+ videos, enable YTUHD tweak.";
|
||||||
"BackgroundPlayback" = "Reproducción en segundo plano";
|
"DownloadManagerYtl" = "Add as YouTube Plus button";
|
||||||
"BackgroundPlaybackDesc" = "Permite la reproducción en segundo plano.";
|
"DownloadManagerYtlDesc" = "Adds YouTube Plus button for download manager under the player.";
|
||||||
|
"PostManager" = "Guardar información de post";
|
||||||
"Navbar" = "Barra de navegación";
|
"PostManagerDesc" = "Permite copiar el texto de un post y guardarlo como imagen con un toque prolongado.";
|
||||||
"RemoveCast" = "Ocultar botón de Cast";
|
"SaveProfilePhoto" = "Guardar foto de perfil";
|
||||||
"RemoveCastDesc" = "Oculta el botón de Cast de la barra de navegación.";
|
"SaveProfilePhotoDesc" = "Guarda la imagen de perfil en la aplicación Fotos con un toque prolongado";
|
||||||
"RemoveNotifications" = "Ocultar botón de Notificaciones";
|
"CommentManager" = "Guardar información de comentarios";
|
||||||
"RemoveNotificationsDesc" = "Oculta el botón de Notificaciones de la barra de navegación.";
|
"CommentManagerDesc" = "Permite copiar el texto del comentario y guardarlo como imagen pulsando prolongadamente.";
|
||||||
"RemoveSearch" = "Ocultar botón de Búsqueda";
|
|
||||||
"RemoveSearchDesc" = "Oculta el botón de Búsqueda de la barra de navegación.";
|
"Navbar" = "Barra de navegación";
|
||||||
"RemoveVoiceSearch" = "Ocultar botón de Búsqueda por voz";
|
"RemoveCast" = "Ocultar botón Emitir";
|
||||||
"RemoveVoiceSearchDesc" = "Oculta el botón de Búsqueda por voz de la barra de navegación.";
|
"RemoveCastDesc" = "Oculta el botón Emitir de la barra de navegación.";
|
||||||
"StickyNavbar" = "Barra de navegación fija";
|
"RemoveNotifications" = "Ocultar botón de Notificaciones";
|
||||||
"StickyNavbarDesc" = "Mantiene fija la barra de navegación para que permanezca visible al desplazarse hacia abajo.";
|
"RemoveNotificationsDesc" = "Oculta el botón de Notificaciones de la barra de navegación.";
|
||||||
"NoSubbar" = "Ocultar subbarra";
|
"RemoveSearch" = "Ocultar botón de Búsqueda";
|
||||||
"NoSubbarDesc" = "Oculta la subbarra (Todo, Novedades para ti, En directo, etc.) debajo de la barra de navegación.";
|
"RemoveSearchDesc" = "Oculta el botón de Búsqueda de la barra de navegación.";
|
||||||
"NoYTLogo" = "Eliminar el logo de YouTube";
|
"RemoveVoiceSearch" = "Ocultar botón de Búsqueda por voz";
|
||||||
"NoYTLogoDesc" = "Elimina el logo de YouTube de la barra de navegación.";
|
"RemoveVoiceSearchDesc" = "Oculta el botón de Búsqueda por voz de la barra de navegación.";
|
||||||
|
"RemoveSponsorBlock" = "Hide SponsorBlock button";
|
||||||
"Overlay" = "Superposición";
|
"RemoveSponsorBlockDesc" = "Hides SponsorBlock button from the Navigation bar.";
|
||||||
"HideAutoplay" = "Ocultar interruptor de reproducción automática";
|
"StickyNavbar" = "Barra de navegación fija";
|
||||||
"HideAutoplayDesc" = "Oculta el interruptor de reproducción automática de la superposición.";
|
"StickyNavbarDesc" = "Mantiene fija la barra de navegación para que permanezca visible al desplazarse hacia abajo.";
|
||||||
"HideSubs" = "Ocultar botón de subtítulos";
|
"NoSubbar" = "Ocultar subbarra";
|
||||||
"HideSubsDesc" = "Oculta el botón de subtítulos de la superposición.";
|
"NoSubbarDesc" = "Oculta la subbarra (Todo, Novedades para ti, En directo, etc.) debajo de la barra de navegación.";
|
||||||
"NoHUDMsgs" = "Ocultar mensajes de HUD";
|
"NoYTLogo" = "Eliminar el logo de YouTube";
|
||||||
"NoHUDMsgsDesc" = "Oculta todos los mensajes de funciones del reproductor. Ejemplo: CC está activado/desactivado, Repetir video está activado, etc.";
|
"NoYTLogoDesc" = "Elimina el logo de YouTube de la barra de navegación.";
|
||||||
"HidePrevNext" = "Ocultar botones Anterior y Siguiente";
|
"PremiumYTLogo" = "Establece el logotipo Premium de YouTube";
|
||||||
"HidePrevNextDesc" = "Oculta los botones de video Anterior y Siguiente de la superposición.";
|
"PremiumYTLogoDesc" = "Establece el logotipo de YouTube Premium en la barra de navegación.";
|
||||||
"ReplacePrevNext" = "Botones de Avance rápido y Rebobinado";
|
|
||||||
"ReplacePrevNextDesc" = "Reemplaza los botones de video Anterior y Siguiente por botones de Avance rápido y Rebobinado en la superposición.";
|
"Feed" = "Feed";
|
||||||
"NoDarkBg" = "Eliminar fondo oscuro";
|
"RemoveAds" = "Eliminar anuncios";
|
||||||
"NoDarkBgDesc" = "Elimina el fondo oscuro de la superposición.";
|
"RemoveAdsDesc" = "Elimina los anuncios dentro de la aplicación.";
|
||||||
"NoEndScreenCards" = "Ocultar tarjetas emergentes de fin de pantalla";
|
"HideShorts" = "Ocultar vídeos Shorts";
|
||||||
"NoEndScreenCardsDesc" = "Oculta las tarjetas emergentes de fin de pantalla (miniaturas) al final de los vídeos.";
|
"HideShortsDesc" = "Oculta los vídeos Shorts de la página de inicio, Recomendados, etc. (No se aplica al historial de reproducciones)";
|
||||||
"NoFullscreenActions" = "Desactivar acciones en pantalla completa";
|
"KeepSubsShorts" = "Keep Shorts in Subscriptions";
|
||||||
"NoFullscreenActionsDesc" = "Desactiva el panel de acciones en el modo de pantalla completa.";
|
"KeepSubsShortsDesc" = "Prevents removing Shorts from Subscriptions tab.";
|
||||||
"PersistentProgressBar" = "Barra de progreso persistente";
|
"RemoveCommunityPosts" = "Remove community posts";
|
||||||
"PersistentProgressBarDesc" = "Muestra siempre la barra de progreso en el reproductor.";
|
"RemoveCommunityPostsDesc" = "Removes community posts from the feed.";
|
||||||
"NoRelatedVids" = "Sin vídeos relacionados en la superposición";
|
"RemoveMoreTopics" = "Remove \"More topics\"";
|
||||||
"NoRelatedVidsDesc" = "Elimina los vídeos relacionados que se muestran en la superposición al deslizar hacia arriba.";
|
"RemoveMoreTopicsDesc" = "Removes \"More topics\" from the feed.";
|
||||||
"NoPromotionCards" = "Ocultar tarjetas de promoción pagada";
|
"FixAlbums" = "Arreglar portadas";
|
||||||
"NoPromotionCardsDesc" = "Oculta la tarjeta \"Incluye promociones pagadas\" en los vídeos que incluyen promociones pagadas.";
|
"FixAlbumsDesc" = "Corrige la visualización de portadas para usuarios de Rusia";
|
||||||
"NoWatermarks" = "Ocultar marcas de agua";
|
|
||||||
"NoWatermarksDesc" = "Oculta las marcas de agua del canal del reproductor.";
|
"Player" = "Reproductor";
|
||||||
|
"Player.Overlay" = "Superposición";
|
||||||
"Player" = "Reproductor";
|
"SpeedControls" = "Speed controls";
|
||||||
"Miniplayer" = "Activar mini reproductor";
|
"SpeedControlsDesc" = "Shows speed control buttons on overlay";
|
||||||
"MiniplayerDesc" = "Activa el mini reproductor para vídeos que no fueron diseñados originalmente para ello, como los vídeos dirigidos a niños.";
|
"HideAutoplay" = "Ocultar interruptor de reproducción automática";
|
||||||
"PortraitFullscreen" = "Modo de pantalla completa vertical";
|
"HideAutoplayDesc" = "Oculta el interruptor de reproducción automática de la superposición.";
|
||||||
"PortraitFullscreenDesc" = "Activa el modo de pantalla completa vertical.";
|
"HideSubs" = "Ocultar botón de subtítulos";
|
||||||
"CopyWithTimestamp" = "Copiar enlaces con marca de tiempo";
|
"HideSubsDesc" = "Oculta el botón de subtítulos de la superposición.";
|
||||||
"CopyWithTimestampDesc" = "Permite copiar el enlace con marca de tiempo en el portapapeles pulsando el botón de pausa.";
|
"HidePrevNext" = "Ocultar botones Anterior y Siguiente";
|
||||||
"DisableAutoplay" = "Desactivar reproducción automática";
|
"HidePrevNextDesc" = "Oculta los botones de video Anterior y Siguiente de la superposición.";
|
||||||
"DisableAutoplayDesc" = "Evita la reproducción automática de vídeos después de abrirlos.";
|
"ReplacePrevNext" = "Botones de Avance rápido y Rebobinado";
|
||||||
"DisableAutoCaptions" = "Desactivar subtítulos automáticos";
|
"ReplacePrevNextDesc" = "Reemplaza los botones de video Anterior y Siguiente por botones de Avance rápido y Rebobinado en la superposición.";
|
||||||
"DisableAutoCaptionsDesc" = "Evita la activación automática de subtítulos.";
|
"NoDarkBg" = "Eliminar fondo oscuro";
|
||||||
"NoContentWarning" = "Omitir advertencia de contenido";
|
"NoDarkBgDesc" = "Elimina el fondo oscuro de la superposición.";
|
||||||
"NoContentWarningDesc" = "Omite el mensaje de advertencia de contenido sensible.";
|
"NoEndScreenCards" = "Ocultar tarjetas emergentes de fin de pantalla";
|
||||||
"ClassicQuality" = "Calidad de vídeo clásica";
|
"NoEndScreenCardsDesc" = "Oculta las tarjetas emergentes de fin de pantalla (miniaturas) al final de los vídeos.";
|
||||||
"ClassicQualityDesc" = "Devuelve el menú clásico de selección de calidad de vídeo.";
|
"NoAutonavEndScreenCards" = "Hide auto-play end screen";
|
||||||
"ExtraSpeedOptions" = "Opciones adicionales de velocidad";
|
"NoAutonavEndScreenCardsDesc" = "Hides the screen that shows what you can play next after playback ended. Disabling this option also disables auto-play";
|
||||||
"ExtraSpeedOptionsDesc" = "Agrega más opciones de velocidad de reproducción de vídeo al menú del reproductor.";
|
"NoFullscreenActions" = "Desactivar acciones en pantalla completa";
|
||||||
"DontSnap2Chapter" = "Desactivar saltar al siguiente capítulo";
|
"NoFullscreenActionsDesc" = "Desactiva el panel de acciones en el modo de pantalla completa.";
|
||||||
"DontSnap2ChapterDesc" = "Desactiva el salto al siguiente episodio mediante el gesto de doble toque.";
|
"PersistentProgressBar" = "Barra de progreso persistente";
|
||||||
"RedProgressBar" = "Barra de progreso roja";
|
"PersistentProgressBarDesc" = "Muestra siempre la barra de progreso en el reproductor.";
|
||||||
"RedProgressBarDesc" = "Devuelve la barra de progreso roja.";
|
"StockVolumeHUD" = "HUD de volumen del sistema";
|
||||||
"NoHints" = "Desactivar sugerencias";
|
"StockVolumeHUDDesc" = "Muestra el HUD de volumen del sistema a pantalla completa.";
|
||||||
"NoHintsDesc" = "Desactiva las sugerencias del autor que aparecen en la esquina superior derecha durante la reproducción.";
|
"NoRelatedVids" = "Sin vídeos relacionados en la superposición";
|
||||||
"NoFreeZoom" = "Desactivar gesto de zoom libre";
|
"NoRelatedVidsDesc" = "Elimina los vídeos relacionados que se muestran en la superposición al deslizar hacia arriba.";
|
||||||
"NoFreeZoomDesc" = "Desactiva los nuevos gestos de zoom libre.";
|
"NoPromotionCards" = "Ocultar tarjetas de promoción pagada";
|
||||||
"AutoFullscreen" = "Reproducir vídeos en pantalla completa";
|
"NoPromotionCardsDesc" = "Oculta la tarjeta \"Incluye promociones pagadas\" en los vídeos que incluyen promociones pagadas.";
|
||||||
"AutoFullscreenDesc" = "Reproduce automáticamente los vídeos en modo de pantalla completa.";
|
"NoWatermarks" = "Ocultar marcas de agua";
|
||||||
"ExitFullscreen" = "Salir del modo de pantalla completa al finalizar";
|
"NoWatermarksDesc" = "Oculta las marcas de agua del canal del reproductor.";
|
||||||
"ExitFullscreenDesc" = "Sale del modo de pantalla completa al finalizar la reproducción del vídeo.";
|
"VideoEndTime" = "Muestra la hora de finalización de la reproducción";
|
||||||
"NoDoubleTap2Seek" = "Desactivar doble toque para buscar";
|
"VideoEndTimeDesc" = "Añade la hora final de reproducción del vídeo a la barra del reproductor.";
|
||||||
"NoDoubleTap2SeekDesc" = "Desactiva el gesto de doble toque para buscar.";
|
"24hrFormat" = "Formato de 24 horas";
|
||||||
|
"24hrFormatDesc" = "Muestra la hora de finalización en formato de 24 horas.";
|
||||||
"Tabbar" = "Barra de pestañas";
|
|
||||||
"RemoveLabels" = "Eliminar etiquetas";
|
"Player.Interface" = "Interface";
|
||||||
"RemoveLabelsDesc" = "Elimina las etiquetas de las pestañas.";
|
"PortraitFullscreen" = "Modo de pantalla completa vertical";
|
||||||
"RemoveIndicators" = "Eliminar indicadores";
|
"PortraitFullscreenDesc" = "Activa el modo de pantalla completa vertical.";
|
||||||
"RemoveIndicatorsDesc" = "Elimina los indicadores de pestaña.";
|
"ClassicQuality" = "Calidad de vídeo clásica";
|
||||||
"ReExplore" = "Reemplazar pestaña Shorts con pestaña Explorar";
|
"ClassicQualityDesc" = "Devuelve el menú clásico de selección de calidad de vídeo.";
|
||||||
"ReExploreDesc" = "Muestra la pestaña Explorar en lugar de la pestaña Shorts como en versiones antiguas de YouTube.";
|
"ExtraSpeedOptions" = "Opciones adicionales de velocidad";
|
||||||
"AddExplore" = "Añadir pestaña Explorar";
|
"ExtraSpeedOptionsDesc" = "Agrega más opciones de velocidad de reproducción de vídeo al menú del reproductor.";
|
||||||
"AddExploreDesc" = "Añade la pestaña Explorar a la barra de pestañas.";
|
"RedProgressBar" = "Barra de progreso roja";
|
||||||
"HideShortsTab" = "Ocultar pestaña Shorts";
|
"RedProgressBarDesc" = "Devuelve la barra de progreso roja.";
|
||||||
"HideShortsTabDesc" = "Oculta la pestaña Shorts de la barra de pestañas.";
|
"NoPlayerRemixButton" = "Elimina el botón Remix";
|
||||||
"HideSubscriptionsTab" = "Ocultar pestaña Suscripciones";
|
"NoPlayerRemixButtonDesc" = "Quita el botón Remix bajo el reproductor.";
|
||||||
"HideSubscriptionsTabDesc" = "Oculta la pestaña Suscripciones de la barra de pestañas.";
|
"NoPlayerClipButton" = "Elimina el botón de clip";
|
||||||
"HideUploadButton" = "Ocultar botón Subir";
|
"NoPlayerClipButtonDesc" = "Elimina botón de clip bajo el reproductor.";
|
||||||
"HideUploadButtonDesc" = "Oculta el botón Subir de la barra de pestañas.";
|
"NoPlayerDownloadButton" = "Elimina el botón de descarga";
|
||||||
"HideLibraryTab" = "Ocultar pestaña Biblioteca";
|
"NoPlayerDownloadButtonDesc" = "Elimina el botón de descarga situado bajo el reproductor.";
|
||||||
"HideLibraryTabDesc" = "Oculta la pestaña Biblioteca de la barra de pestañas.";
|
|
||||||
|
"Player.Actions" = "Actions";
|
||||||
"Shorts" = "Shorts";
|
"BackgroundPlayback" = "Reproducción en segundo plano";
|
||||||
"ShortsOnlyMode" = "Modo sólo Shorts";
|
"BackgroundPlaybackDesc" = "Permite la reproducción en segundo plano.";
|
||||||
"ShortsOnlyModeDesc" = "Limita la funcionalidad de YouTube únicamente a la visualización de Shorts.";
|
"Miniplayer" = "Activar mini reproductor";
|
||||||
"HideShorts" = "Ocultar vídeos Shorts";
|
"MiniplayerDesc" = "Activa el mini reproductor para vídeos que no fueron diseñados originalmente para ello, como los vídeos dirigidos a niños.";
|
||||||
"HideShortsDesc" = "Oculta los vídeos Shorts de la página de inicio, Recomendados, etc. (No se aplica al historial de reproducciones)";
|
"DisableAutoplay" = "Desactivar reproducción automática";
|
||||||
"ShortsProgress" = "Activar barra de progreso";
|
"DisableAutoplayDesc" = "Evita la reproducción automática de vídeos después de abrirlos.";
|
||||||
"ShortsProgressDesc" = "Muestra una barra de progreso en la superposición de Shorts.";
|
"DisableAutoCaptions" = "Desactivar subtítulos automáticos";
|
||||||
"PinchToFullscreenShorts" = "Pellizcar para pantalla completa";
|
"DisableAutoCaptionsDesc" = "Evita la activación automática de subtítulos.";
|
||||||
"PinchToFullscreenShortsDesc" = "Gestiona la visibilidad de la superposición con gestos de pellizcar para acercar y pellizcar para alejar, mostrando Shorts en modo de pantalla completa.";
|
"NoContentWarning" = "Omitir advertencia de contenido";
|
||||||
"ShortsToRegular" = "De Shorts a vídeos normales";
|
"NoContentWarningDesc" = "Omite el mensaje de advertencia de contenido sensible.";
|
||||||
"ShortsToRegularDesc" = "Abre los Shorts como vídeos normales.";
|
"NoHints" = "Desactivar sugerencias";
|
||||||
"ResumeShorts" = "No empezar desde la pestaña Shorts";
|
"NoHintsDesc" = "Desactiva las sugerencias del autor que aparecen en la esquina superior derecha durante la reproducción.";
|
||||||
"ResumeShortsDesc" = "Evita empezar desde los vídeos Shorts al abrir la aplicación, lo cual ocurre si YouTube se cerró mientras se veían Shorts.";
|
"AutoFullscreen" = "Reproducir vídeos en pantalla completa";
|
||||||
"HideShortsLogo" = "Ocultar el logo de Shorts";
|
"AutoFullscreenDesc" = "Reproduce automáticamente los vídeos en modo de pantalla completa.";
|
||||||
"HideShortsLogoDesc" = "Oculta el logo de Shorts en la esquina superior izquierda.";
|
"ExitFullscreen" = "Salir del modo de pantalla completa al finalizar";
|
||||||
"HideShortsSearch" = "Ocultar botón de búsqueda";
|
"ExitFullscreenDesc" = "Sale del modo de pantalla completa al finalizar la reproducción del vídeo.";
|
||||||
"HideShortsSearchDesc" = "Oculta el botón de búsqueda en la superposición de Shorts.";
|
|
||||||
"HideShortsCamera" = "Ocultar botón de cámara";
|
"Player.Gestures" = "Gestures";
|
||||||
"HideShortsCameraDesc" = "Oculta el botón de cámara en la superposición de Shorts.";
|
"AdjustWithFinger" = "Adjust speed by gestures";
|
||||||
"HideShortsMore" = "Ocultar botón Más (⋮)";
|
"AdjustWithFingerDesc" = "Allows adjusting playback speed by long press on player and moving finger up and down";
|
||||||
"HideShortsMoreDesc" = "Oculta el botón Más (⋮) en la superposición de Shorts. También se puede acceder manteniendo presionada la pantalla.";
|
"PreserveSpeed" = "Preserve Speed";
|
||||||
"HideShortsSubscriptions" = "Ocultar botón de Suscripciones";
|
"PreserveSpeedDesc" = "Preserves adjusted speed after gesture completion";
|
||||||
"HideShortsSubscriptionsDesc" = "Oculta el botón de Suscripciones que aparece cuando se pausa un vídeo Shorts.";
|
"TwoFingerTapToPause" = "Pause using two fingers";
|
||||||
"HideShortsLike" = "Ocultar botón de Me gusta";
|
"TwoFingerTapToPauseDesc" = "Pause/Resume playback by tapping on the screen using two fingers.";
|
||||||
"HideShortsLikeDesc" = "Oculta el botón de Me gusta en la superposición de Shorts.";
|
"TwoFingerPanToBrightness" = "Adjust brightness";
|
||||||
"HideShortsDislike" = "Ocultar botón de No me gusta";
|
"TwoFingerPanToBrightnessDesc" = "Allows adjusting screen brigthness by sliding up/down using two fingers.";
|
||||||
"HideShortsDislikeDesc" = "Oculta el botón de No me gusta en la superposición de Shorts.";
|
"CopyWithTimestamp" = "Copiar enlaces con marca de tiempo";
|
||||||
"HideShortsComments" = "Ocultar botón de Comentarios";
|
"CopyWithTimestampDesc" = "Permite copiar el enlace con marca de tiempo en el portapapeles pulsando el botón de pausa.";
|
||||||
"HideShortsCommentsDesc" = "Oculta el botón de Comentarios en la superposición de Shorts.";
|
"PauseOnOverlay" = "Pausa en la superposición";
|
||||||
"HideShortsRemix" = "Ocultar botón de Remixer";
|
"PauseOnOverlayDesc" = "Establece la reproducción en pausa si aparece la superposición.";
|
||||||
"HideShortsRemixDesc" = "Oculta el botón de Remixer en la superposición de Shorts.";
|
"DontSnap2Chapter" = "Desactivar saltar al siguiente capítulo";
|
||||||
"HideShortsShare" = "Ocultar botón de Compartir";
|
"DontSnap2ChapterDesc" = "Desactiva el salto al siguiente episodio mediante el gesto de doble toque.";
|
||||||
"HideShortsShareDesc" = "Oculta el botón de Compartir en la superposición de Shorts.";
|
"NoTwoFingerSnapToChapter" = "Desactivar el doble toque con dos dedos";
|
||||||
"HideShortsAvatars" = "Ocultar avatar de los canales";
|
"NoTwoFingerSnapToChapterDesc" = "Desactiva el gesto de pasar a capítulo con dos dedos.";
|
||||||
"HideShortsAvatarsDesc" = "Oculta la imagen de perfil en la esquina inferior derecha.";
|
"NoFreeZoom" = "Desactivar gesto de zoom libre";
|
||||||
"HideShortsThanks" = "Ocultar botón de Supergracias";
|
"NoFreeZoomDesc" = "Desactiva los nuevos gestos de zoom libre.";
|
||||||
"HideShortsThanksDesc" = "Oculta el botón de Supergracias (Donar) en la superposición de Shorts.";
|
"NoDoubleTap2Seek" = "Desactivar doble toque para buscar";
|
||||||
"HideShortsSource" = "Ocultar fuente de Shorts";
|
"NoDoubleTap2SeekDesc" = "Desactiva el gesto de doble toque para buscar.";
|
||||||
"HideShortsSourceDesc" = "Oculta las fuentes Shorts bajo el nombre del canal.";
|
|
||||||
"HideShortsChannelName" = "Ocultar nombre del canal";
|
"Shorts" = "Shorts";
|
||||||
"HideShortsChannelNameDesc" = "Oculta el nombre del canal y el botón de Suscribirse en la superposición de Shorts.";
|
"ShortsOnlyMode" = "Modo sólo Shorts";
|
||||||
"HideShortsDescription" = "Ocultar descripción";
|
"ShortsOnlyModeDesc" = "Limita la funcionalidad de YouTube únicamente a la visualización de Shorts.";
|
||||||
"HideShortsDescriptionDesc" = "Oculta la descripción de Shorts debajo del nombre del canal.";
|
"AutoSkipShorts" = "Salto automático de Shorts";
|
||||||
"HideShortsAudioTrack" = "Ocultar pista de audio";
|
"AutoSkipShortsDesc" = "Pasa al vídeo siguiente cuando finaliza la reproducción del vídeo actual.";
|
||||||
"HideShortsAudioTrackDesc" = "Oculta la pista de audio debajo de la descripción de Shorts.";
|
"ShortsProgress" = "Activar barra de progreso";
|
||||||
|
"ShortsProgressDesc" = "Muestra una barra de progreso en la superposición de Shorts.";
|
||||||
"Other" = "Otro";
|
"SpeedByLongTap" = "Increase Shorts playback rate";
|
||||||
"CopyVideoInfo" = "Copy video information";
|
"SpeedByLongTapDesc" = "Allows to speed up playback by long pressing on a certain part of the screen.";
|
||||||
"CopyVideoInfoDesc" = "Adds button to copy video title and description into Video Description panel.";
|
"SpeedLocation" = "Activation location";
|
||||||
"PostManager" = "Save post information";
|
"LeftSide" = "Left side";
|
||||||
"PostManagerDesc" = "Allows to copy post text and save post as image by long tap.";
|
"RightSide" = "Right side";
|
||||||
"SavePostImage" = "Guardar imagen de las entradas de la comunidad";
|
"PinchToFullscreenShorts" = "Pellizcar para pantalla completa";
|
||||||
"SavePostImageDesc" = "Guarda la imagen de las publicaciones de la comunidad en la aplicación Fotos con un toque prolongado";
|
"PinchToFullscreenShortsDesc" = "Gestiona la visibilidad de la superposición con gestos de pellizcar para acercar y pellizcar para alejar, mostrando Shorts en modo de pantalla completa.";
|
||||||
"SaveProfilePhoto" = "Guardar foto de perfil";
|
"ShortsToRegular" = "De Shorts a vídeos normales";
|
||||||
"SaveProfilePhotoDesc" = "Guarda la imagen de perfil en la aplicación Fotos con un toque prolongado";
|
"ShortsToRegularDesc" = "Abre los Shorts como vídeos normales.";
|
||||||
"CommentManager" = "Save comment information";
|
"HideShortsLogo" = "Ocultar el logo de Shorts";
|
||||||
"CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
|
"HideShortsLogoDesc" = "Oculta el logo de Shorts en la esquina superior izquierda.";
|
||||||
"FixAlbums" = "Arreglar portadas";
|
"HideShortsSearch" = "Ocultar botón de búsqueda";
|
||||||
"FixAlbumsDesc" = "Corrige la visualización de portadas para usuarios de Rusia";
|
"HideShortsSearchDesc" = "Oculta el botón de búsqueda en la superposición de Shorts.";
|
||||||
"RemovePlayNext" = "Eliminar \"Reproducir siguiente en cola\"";
|
"HideShortsCamera" = "Ocultar botón de cámara";
|
||||||
"RemovePlayNextDesc" = "Elimina la opción \"Reproducir siguiente en cola\" del menú.";
|
"HideShortsCameraDesc" = "Oculta el botón de cámara en la superposición de Shorts.";
|
||||||
"NoContinueWatching" = "Eliminar \"Continuar viendo\"";
|
"HideShortsMore" = "Ocultar botón Más (⋮)";
|
||||||
"NoContinueWatchingDesc" = "Elimina la sección \"Continuar viendo\" que contiene videos sin terminar de la página de inicio.";
|
"HideShortsMoreDesc" = "Oculta el botón Más (⋮) en la superposición de Shorts. También se puede acceder manteniendo presionada la pantalla.";
|
||||||
"NoSearchHistory" = "Ocultar el historial de búsqueda";
|
"HideShortsSubscriptions" = "Ocultar botón de Suscripciones";
|
||||||
"NoSearchHistoryDesc" = "Oculta visualmente el historial de búsqueda y las sugerencias. Nota: El historial de búsqueda seguirá siendo accesible en otros clientes de YouTube.";
|
"HideShortsSubscriptionsDesc" = "Oculta el botón de Suscripciones que aparece cuando se pausa un vídeo Shorts.";
|
||||||
"NoRelatedWatchNexts" = "Ocultar todos los vídeos del reproductor";
|
|
||||||
"NoRelatedWatchNextsDesc" = "Oculta todos los vídeos debajo del reproductor, dejando sólo la información del vídeo y la sección de comentarios.";
|
"Tabbar" = "Barra de pestañas";
|
||||||
"StickSortComments" = "Pegar cabecera de comentarios";
|
"RemoveLabels" = "Eliminar etiquetas";
|
||||||
"StickSortCommentsDesc" = "Los pines ordenan la cabecera de comentarios (Arriba, Más reciente) para que no desaparezca al desplazarse.";
|
"RemoveLabelsDesc" = "Elimina las etiquetas de las pestañas.";
|
||||||
"HideSortComments" = "Ocultar cabecera de comentarios";
|
"RemoveIndicators" = "Eliminar indicadores";
|
||||||
"HideSortCommentsDesc" = "Oculta la cabecera de los comentarios de ordenación (Top, Newest) para que nunca aparezca.";
|
"RemoveIndicatorsDesc" = "Elimina los indicadores de pestaña.";
|
||||||
"PlaylistOldMinibar" = "Lista de reproducción antigua minibar";
|
"ReExplore" = "Reemplazar pestaña Shorts con pestaña Explorar";
|
||||||
"PlaylistOldMinibarDesc" = "Sustituye el nuevo panel flotante de listas de reproducción por el antiguo.";
|
"ReExploreDesc" = "Muestra la pestaña Explorar en lugar de la pestaña Shorts como en versiones antiguas de YouTube.";
|
||||||
"DisableRTL" = "Desactivar el formato RTL";
|
"AddExplore" = "Añadir pestaña Explorar";
|
||||||
"DisableRTLDesc" = "Muestra forzosamente el texto en formato de izquierda a derecha (LTR) para los idiomas que se muestran inicialmente en formato de derecha a izquierda (RTL).";
|
"AddExploreDesc" = "Añade la pestaña Explorar a la barra de pestañas.";
|
||||||
|
"HideShortsTab" = "Ocultar pestaña Shorts";
|
||||||
"Startup" = "Página de inicio";
|
"HideShortsTabDesc" = "Oculta la pestaña Shorts de la barra de pestañas.";
|
||||||
"Home" = "Inicio";
|
"HideSubscriptionsTab" = "Ocultar pestaña Suscripciones";
|
||||||
"Explore" = "Explorar";
|
"HideSubscriptionsTabDesc" = "Oculta la pestaña Suscripciones de la barra de pestañas.";
|
||||||
"ShortsTab" = "Shorts";
|
"HideUploadButton" = "Ocultar botón Subir";
|
||||||
"Subscriptions" = "Suscripciones";
|
"HideUploadButtonDesc" = "Oculta el botón Subir de la barra de pestañas.";
|
||||||
"Library" = "Biblioteca";
|
"HideLibraryTab" = "Ocultar pestaña Biblioteca";
|
||||||
"Warning" = "Advertencia";
|
"HideLibraryTabDesc" = "Hides Library tab from the Tab bar.\n\nThis tab can be restored by long pressing Home tab.";
|
||||||
"TabIsHidden" = "No se puede seleccionar una pestaña oculta como página de inicio";
|
|
||||||
|
"Interface" = "Interface";
|
||||||
"DonateViaPayPal" = "Donate via PayPal";
|
"OledTheme" = "Oled theme";
|
||||||
"SupportViaGhSponsors" = "Support development via Github Sponsors";
|
"OledThemeDesc" = "Turns all dark colors to black";
|
||||||
"Version" = "Versión";
|
"NativeShare" = "Hoja de acciones nativas";
|
||||||
"About" = "Acerca de";
|
"NativeShareDesc" = "Utiliza la hoja de uso compartido del sistema para compartir medios";
|
||||||
"Credits" = "Créditos";
|
"RemoveInlineComment" = "Remove inline comment";
|
||||||
"Developer" = "Desarrollador de YTLite";
|
"RemoveInlineCommentDesc" = "Removes comment section under the player.";
|
||||||
"ChineseSimplified" = "Traducción: Chino (Simplificado)";
|
"RemovePlayNext" = "Eliminar \"Reproducir siguiente en cola\"";
|
||||||
"ChineseTraditional" = "Traducción: Chino (Tradicional)";
|
"RemovePlayNextDesc" = "Elimina la opción \"Reproducir siguiente en cola\" del menú.";
|
||||||
"French" = "Traducción: Frances";
|
"RemoveDownloadMenu" = "Eliminar \"Descargar\"";
|
||||||
"Spanish" = "Traducción: Español";
|
"RemoveDownloadMenuDesc" = "Elimina la opción \"Descargar\" del menú.";
|
||||||
"Japanese" = "Traducción: Japonés";
|
"RemoveWatchLaterMenu" = "Eliminar \"Guardar para ver más tarde\"";
|
||||||
"Vietnamese" = "Vietnamese localization";
|
"RemoveWatchLaterMenuDesc" = "Elimina la opción \"Guardar para ver más tarde\" del menú.";
|
||||||
"Advanced" = "Modo avanzado";
|
"RemoveSaveToPlaylistMenu" = "Eliminar \"Guardar en lista de reproducción\"";
|
||||||
"AdvancedModeReminder" = "¿Desea activar el modo Avanzado para YTLite?\n\nEste modo ofrece más de 50 opciones adicionales para personalizar y optimizar tu experiencia en YouTube. Puedes activarlo/desactivarlo más tarde desde Ajustes → %@ → %@ → %@.";
|
"RemoveSaveToPlaylistMenuDesc" = "Elimina la opción \"Guardar en lista de reproducción\" del menú.";
|
||||||
"ClearCache" = "Clear cache";
|
"RemoveShareMenu" = "Eliminar \"Compartir\"";
|
||||||
"ResetSettings" = "Restablecer configuración de YTLite";
|
"RemoveShareMenuDesc" = "Elimina la opción \"Compartir\" del menú.";
|
||||||
"ResetMessage" = "Esta opción restablecerá la configuración de YTLite a los valores predeterminados y cerrará YouTube.\n\n¿Estás seguro de que deseas continuar?";
|
"RemoveNotInterestedMenu" = "Eliminar \"No me interesa\"";
|
||||||
"ShortsOnlyWarning" = "¿Estás seguro de que quieres activar este modo?\n\nEn este modo, sólo podrás ver Shorts y no podrás hacer nada más.\n\nPuedes desactivar el modo sólo Shorts realizando una pulsación larga con dos dedos en el reproductor de Shorts.";
|
"RemoveNotInterestedMenuDesc" = "Elimina la opción \"No me interesa\" del menú.";
|
||||||
"ShortsModeTurnedOff" = "Se ha desactivado el modo de sólo Shorts";
|
"RemoveDontRecommendMenu" = "Eliminar \"No recomendar canal\"";
|
||||||
"Yes" = "Sí";
|
"RemoveDontRecommendMenuDesc" = "Elimina la opción \"No recomendar canal\" del menú.";
|
||||||
"No" = "No";
|
"RemoveReportMenu" = "Eliminar \"Reportar\"";
|
||||||
|
"RemoveReportMenuDesc" = "Elimina la opción \"Reportar\" del menú.";
|
||||||
"SelectAction" = "Select action";
|
"NoContinueWatching" = "Eliminar \"Continuar viendo\"";
|
||||||
"CopyTitle" = "Copy title";
|
"NoContinueWatchingDesc" = "Elimina la sección \"Continuar viendo\" que contiene videos sin terminar de la página de inicio.";
|
||||||
"CopyDescription" = "Copy description";
|
"NoSearchHistory" = "Ocultar el historial de búsqueda";
|
||||||
"CopyPostText" = "Copy post text";
|
"NoSearchHistoryDesc" = "Oculta visualmente el historial de búsqueda y las sugerencias. Nota: El historial de búsqueda seguirá siendo accesible en otros clientes de YouTube.";
|
||||||
"SavePostAsImage" = "Save post as image";
|
"NoRelatedWatchNexts" = "Ocultar todos los vídeos del reproductor";
|
||||||
"CopyPostAsImage" = "Copy post as image";
|
"NoRelatedWatchNextsDesc" = "Oculta todos los vídeos debajo del reproductor, dejando sólo la información del vídeo y la sección de comentarios.";
|
||||||
"CopyCommentText" = "Copy comment text";
|
"StickSortComments" = "Pegar cabecera de comentarios";
|
||||||
"SaveCommentAsImage" = "Save comment as image";
|
"StickSortCommentsDesc" = "Los pines ordenan la cabecera de comentarios (Arriba, Más reciente) para que no desaparezca al desplazarse.";
|
||||||
"CopyCommentAsImage" = "Copy comment as image";
|
"HideSortComments" = "Ocultar cabecera de comentarios";
|
||||||
"Cancel" = "Cancel";
|
"HideSortCommentsDesc" = "Oculta la cabecera de los comentarios de ordenación (Top, Newest) para que nunca aparezca.";
|
||||||
"Copied" = "Copiado al portapapeles";
|
"PlaylistOldMinibar" = "Lista de reproducción antigua minibar";
|
||||||
"Done" = "Done";
|
"PlaylistOldMinibarDesc" = "Sustituye el nuevo panel flotante de listas de reproducción por el antiguo.";
|
||||||
"Saved" = "Guardado en Fotos";
|
"StartupAnimation" = "Startup animation";
|
||||||
"Error" = "Error";
|
"StartupAnimationDesc" = "Displays YouTube startup loading animation";
|
||||||
|
"OldYTUI" = "Old UI";
|
||||||
|
"OldYTUIDesc" = "Spoofs YouTube version so that it will return old interface";
|
||||||
|
"DisableRTL" = "Desactivar el formato RTL";
|
||||||
|
"DisableRTLDesc" = "Muestra forzosamente el texto en formato de izquierda a derecha (LTR) para los idiomas que se muestran inicialmente en formato de derecha a izquierda (RTL).";
|
||||||
|
|
||||||
|
"HoldToSpeed" = "Mantener para velocidad";
|
||||||
|
"DefaultPlaybackRate" = "Velocidad de reproducción predeterminada";
|
||||||
|
"PlaybackQualityOnWiFi" = "Calidad de reproducción en WiFi";
|
||||||
|
"PlaybackQualityOnCellular" = "Calidad de reproducción en red móvil";
|
||||||
|
|
||||||
|
"Startup" = "Página de inicio";
|
||||||
|
"Home" = "Inicio";
|
||||||
|
"Explore" = "Explorar";
|
||||||
|
"ShortsTab" = "Shorts";
|
||||||
|
"Subscriptions" = "Suscripciones";
|
||||||
|
"Library" = "Biblioteca";
|
||||||
|
"Warning" = "Advertencia";
|
||||||
|
"TabIsHidden" = "No se puede seleccionar una pestaña oculta como página de inicio";
|
||||||
|
|
||||||
|
"SupportDevelopment" = "Apoyar el desarrollo";
|
||||||
|
"SupportDevelopmentDesc" = "Si te gusta YTLite y quieres apoyar su desarrollo, puedes hacerlo utilizando cualquiera de las formas convenientes que se indican a continuación.\n¡Gracias❤!";
|
||||||
|
"Contributors" = "Colaboradores";
|
||||||
|
"OpenSourceLibs" = "Bibliotecas de código abierto";
|
||||||
|
"Preferences" = "%@ preferences";
|
||||||
|
"Version" = "Versión";
|
||||||
|
"About" = "Acerca de";
|
||||||
|
"Credits" = "Créditos";
|
||||||
|
"Developer" = "Desarrollador de YTLite";
|
||||||
|
"SpecialThanks" = "Agradecimientos especiales";
|
||||||
|
"SpecialThanks.Test" = "Invaluable contribution to tweak testing";
|
||||||
|
"ChineseSimplified" = "Traducción: Chino (Simplificado)";
|
||||||
|
"ChineseTraditional" = "Traducción: Chino (Tradicional)";
|
||||||
|
"French" = "Traducción: Frances";
|
||||||
|
"Spanish" = "Traducción: Español";
|
||||||
|
"Japanese" = "Traducción: Japonés";
|
||||||
|
"Vietnamese" = "Traducción: vietnamita";
|
||||||
|
"Advanced" = "Modo avanzado";
|
||||||
|
"AdvancedDesc" = "Modo más personalizable";
|
||||||
|
"AdvancedModeEnabled" = "Advanced mode has been enabled";
|
||||||
|
"AdvancedModeDisabled" = "Advanced mode has been disabled";
|
||||||
|
"AdvancedModeReminder" = "¿Desea activar el modo Avanzado para YTLite?\n\nEste modo ofrece más de 50 opciones adicionales para personalizar y optimizar tu experiencia en YouTube. Puedes activarlo/desactivarlo más tarde desde Ajustes → %@ → %@ → %@.";
|
||||||
|
"ClearCache" = "Borrar caché";
|
||||||
|
"ClearCacheMessage" = "You're about to clear %@ of cache.\n\nDo you want to continue?";
|
||||||
|
"ImportPreferences" = "Import preferences";
|
||||||
|
"PreImportMessage" = "This action will replace the current preferences with those from the selected file.\n\nAre you sure you want to continue?";
|
||||||
|
"ExportPreferences" = "Export preferences";
|
||||||
|
"ResetSettings" = "Restablecer configuración de YTLite";
|
||||||
|
"ResetMessage" = "Esta opción restablecerá la configuración de YTLite a los valores predeterminados y cerrará YouTube.\n\n¿Estás seguro de que deseas continuar?";
|
||||||
|
"ShortsOnlyWarning" = "¿Estás seguro de que quieres activar este modo?\n\nEn este modo, sólo podrás ver Shorts y no podrás hacer nada más.\n\nPuedes desactivar el modo sólo Shorts realizando una pulsación larga con dos dedos en el reproductor de Shorts.";
|
||||||
|
"ShortsModeTurnedOff" = "Se ha desactivado el modo de sólo Shorts";
|
||||||
|
"LibraryAdded" = "Se ha restablecido la pestaña Tú/Biblioteca";
|
||||||
|
"LibraryRemoved" = "Se ha eliminado la pestaña Tú/Biblioteca";
|
||||||
|
"Yes" = "Sí";
|
||||||
|
"No" = "No";
|
||||||
|
|
||||||
|
"Select" = "Select";
|
||||||
|
"Default" = "Predeterminado";
|
||||||
|
"Best" = "Mejor";
|
||||||
|
"Show" = "Show";
|
||||||
|
"Disable" = "Desactivar";
|
||||||
|
"Disabled" = "Desactivado";
|
||||||
|
"PlaybackSpeed" = "Velocidad de reproducción";
|
||||||
|
"SpeedPreserved" = "Speed preserved";
|
||||||
|
"ResetSpeed" = "Reset";
|
||||||
|
|
||||||
|
"Brightness" = "Brightness";
|
||||||
|
"Toast.PlaybackSpeed" = "Playback Speed";
|
||||||
|
|
||||||
|
"SelectAction" = "Seleccionar acción";
|
||||||
|
"DownloadVideo" = "Download video";
|
||||||
|
"DownloadAudio" = "Download audio";
|
||||||
|
"SaveImage" = "Save image";
|
||||||
|
"CopyInformation" = "Copy information";
|
||||||
|
"CopyChannelName" = "Copy channel name";
|
||||||
|
"CopyTitle" = "Copiar título";
|
||||||
|
"CopyDescription" = "Copiar descripción";
|
||||||
|
"CopyTimestampedLink" = "Copy link with timestamp";
|
||||||
|
"PlayInExternalPlayer" = "Play in external player";
|
||||||
|
"PlayInSystemPlayer" = "Play in system player";
|
||||||
|
"PlayInInfuse" = "Play in Infuse";
|
||||||
|
"PlayInVLC" = "Play in VLC";
|
||||||
|
"PlayerNotFound" = "Player not found";
|
||||||
|
"OpenAsRegularVideo" = "Open as regular video";
|
||||||
|
"CopyPostText" = "Copiar texto de la publicación";
|
||||||
|
"SaveCurrentImage" = "Guardar imagen actual";
|
||||||
|
"CopyCurrentImage" = "Copiar imagen actual";
|
||||||
|
"SavePostAsImage" = "Guardar publicación como imagen";
|
||||||
|
"CopyPostAsImage" = "Copiar publicación como imagen";
|
||||||
|
"CopyCommentText" = "Copiar texto del comentario";
|
||||||
|
"SaveCommentAsImage" = "Guardar comentario como imagen";
|
||||||
|
"CopyCommentAsImage" = "Copiar comentario como imagen";
|
||||||
|
"SaveProfilePicture" = "Guardar imagen de perfil";
|
||||||
|
"CopyProfilePicture" = "Copiar imagen de perfil";
|
||||||
|
"DownloadThumbnail" = "Save thumbnail";
|
||||||
|
"CopyThumbnail" = "Copy thumbnail";
|
||||||
|
"Cancel" = "Cancelar";
|
||||||
|
"Cancelled" = "Cancelled";
|
||||||
|
"Copied" = "Copiado al portapapeles";
|
||||||
|
"Done" = "Hecho";
|
||||||
|
"Saved" = "Guardado en Fotos";
|
||||||
|
"Error" = "Error";
|
||||||
|
"Error.Clipboard" = "Error. Check clipboard for more info";
|
||||||
|
"Error.PathIssue" = "Error. Problem with generating final path. Issue with media title?";
|
||||||
|
"Error.NoSpace" = "Insufficient space on the device.\n\nAt least %@ additional free space is required. Available free space: %@";
|
||||||
|
"Error.Multidownloading" = "Multi-downloading not available yet.";
|
||||||
|
"Error.FailedToImport" = "Failed to import preferences";
|
||||||
|
"DownloadingVideo" = "Downloading video";
|
||||||
|
"DownloadingAudio" = "Downloading audio";
|
||||||
|
"Converting" = "Converting";
|
||||||
|
"RetryLogin" = "Workaround activated.\n\nPlease try again.";
|
||||||
|
"LoginInfo" = "App restart required after successful signing into Google account";
|
||||||
|
|
||||||
|
"Welcome.Download" = "Download Media";
|
||||||
|
"Welcome.DownloadDesc" = "Download your favorite content, whether it's Videos, Shorts, Audio, or Profile photos. Copy interesting posts and comments or save them as images";
|
||||||
|
"Welcome.Content" = "Adjust Interface";
|
||||||
|
"Welcome.ContentDesc" = "Remove unwanted content and interface elements. Enable true OLED dark mode";
|
||||||
|
"Welcome.Player" = "Setup Player Behavior";
|
||||||
|
"Welcome.PlayerDesc" = "Сustomize the player's behavior, auto-select quality and playback speed. Control using gestures";
|
||||||
|
"Welcome.More" = "And even more...";
|
||||||
|
"Welcome.MoreDesc" = "YouTube Plus includes over 50 different options, including features like saving preferences and clearing cache. Settings are available in the YouTube Plus section under YouTube settings";
|
||||||
|
"SupportMe" = "Support me";
|
||||||
|
"Continue" = "Continue";
|
||||||
|
|
||||||
|
"DonationReminder" = "Your support makes YTPlus better... Support through tweak settings";
|
||||||
|
"DontRemind" = "Turn off";
|
||||||
@@ -1,219 +1,344 @@
|
|||||||
"General" = "Général";
|
"Downloading" = "Downloading";
|
||||||
"RemoveAds" = "Supprimer les publicités";
|
"DownloadManager" = "Download manager";
|
||||||
"RemoveAdsDesc" = "Supprime les publicités intégrées.";
|
"DownloadManagerDesc" = "Replaces 'Download' button action under the player with a Download Manager, which allows downloading Video, Audio, Thumbnail Image, and Copying Video Information.\n\nTo download 2K+ videos, enable YTUHD tweak.";
|
||||||
"BackgroundPlayback" = "Lecture en arrière-plan";
|
"DownloadManagerYtl" = "Add as YouTube Plus button";
|
||||||
"BackgroundPlaybackDesc" = "Active la lecture en arrière-plan.";
|
"DownloadManagerYtlDesc" = "Adds YouTube Plus button for download manager under the player.";
|
||||||
|
"PostManager" = "Gérer les publications";
|
||||||
"Navbar" = "Barre de navigation";
|
"PostManagerDesc" = "Permet de copier le texte de la publication et de sauvegarder la publication en tant qu'image en maintenant le toucher.";
|
||||||
"RemoveCast" = "Masquer le bouton Cast";
|
"SaveProfilePhoto" = "Enregistrer la photo de profil";
|
||||||
"RemoveCastDesc" = "Masque le bouton Cast de la barre de navigation.";
|
"SaveProfilePhotoDesc" = "Enregistre la photo de profil dans l'application Photos en appuyant longuement.";
|
||||||
"RemoveNotifications" = "Masquer le bouton Notifications";
|
"CommentManager" = "Gérer les commentaires";
|
||||||
"RemoveNotificationsDesc" = "Masque le bouton Notifications de la barre de navigation.";
|
"CommentManagerDesc" = "Permet de copier le texte des commentaires et de sauvegarder le commentaire en tant qu'image en maintenant une pression prolongée.";
|
||||||
"RemoveSearch" = "Masquer le bouton Recherche";
|
|
||||||
"RemoveSearchDesc" = "Masque le bouton Recherche de la barre de navigation.";
|
"Navbar" = "Barre de navigation";
|
||||||
"RemoveVoiceSearch" = "Masquer le bouton Recherche vocale";
|
"RemoveCast" = "Masquer le bouton Cast";
|
||||||
"RemoveVoiceSearchDesc" = "Masque le bouton Recherche vocale de la barre de navigation.";
|
"RemoveCastDesc" = "Masque le bouton Cast de la barre de navigation.";
|
||||||
"StickyNavbar" = "Barre de navigation épinglée";
|
"RemoveNotifications" = "Masquer le bouton Notifications";
|
||||||
"StickyNavbarDesc" = "Épingle la barre de navigation pour qu'elle reste visible lors du défilement vers le bas.";
|
"RemoveNotificationsDesc" = "Masque le bouton Notifications de la barre de navigation.";
|
||||||
"NoSubbar" = "Masquer la sous-barre";
|
"RemoveSearch" = "Masquer le bouton Recherche";
|
||||||
"NoSubbarDesc" = "Masque la sous-barre (Tous, Nouveautés, En direct, etc.) sous la barre de navigation.";
|
"RemoveSearchDesc" = "Masque le bouton Recherche de la barre de navigation.";
|
||||||
"NoYTLogo" = "Supprimer le logo YouTube";
|
"RemoveVoiceSearch" = "Masquer le bouton Recherche vocale";
|
||||||
"NoYTLogoDesc" = "Supprime le logo YouTube dans la barre de navigation.";
|
"RemoveVoiceSearchDesc" = "Masque le bouton Recherche vocale de la barre de navigation.";
|
||||||
|
"RemoveSponsorBlock" = "Hide SponsorBlock button";
|
||||||
"Overlay" = "Overlay";
|
"RemoveSponsorBlockDesc" = "Hides SponsorBlock button from the Navigation bar.";
|
||||||
"HideAutoplay" = "Masquer le toggle de lecture automatique";
|
"StickyNavbar" = "Barre de navigation épinglée";
|
||||||
"HideAutoplayDesc" = "Masque le toggle de lecture automatique de l'overlay.";
|
"StickyNavbarDesc" = "Épingle la barre de navigation pour qu'elle reste visible lors du défilement vers le bas.";
|
||||||
"HideSubs" = "Masquer le bouton Sous-titres";
|
"NoSubbar" = "Masquer la sous-barre";
|
||||||
"HideSubsDesc" = "Masque le bouton Sous-titres de l'overlay.";
|
"NoSubbarDesc" = "Masque la sous-barre (Tous, Nouveautés, En direct, etc.) sous la barre de navigation.";
|
||||||
"NoHUDMsgs" = "Masquer les messages HUD";
|
"NoYTLogo" = "Supprimer le logo YouTube";
|
||||||
"NoHUDMsgsDesc" = "Masque tous les messages des fonctionnalités du lecteur. Exemple: les sous-titres sont activés/désactivés, la boucle vidéo est activée, etc.";
|
"NoYTLogoDesc" = "Supprime le logo YouTube dans la barre de navigation.";
|
||||||
"HidePrevNext" = "Masquer les boutons Précédent et Suivant";
|
"PremiumYTLogo" = "Set Premium YouTube logo";
|
||||||
"HidePrevNextDesc" = "Masque les boutons vidéo Précédent et Suivant de l'overlay.";
|
"PremiumYTLogoDesc" = "Sets Premium YouTube logo in the Navigation bar.";
|
||||||
"ReplacePrevNext" = "Boutons Avance rapide et Retour rapide";
|
|
||||||
"ReplacePrevNextDesc" = "Remplace les boutons vidéo Précédent et Suivant par des boutons Avance rapide et Retour rapide dans l'overlay.";
|
"Feed" = "Feed";
|
||||||
"NoDarkBg" = "Supprimer l'arrière-plan sombre";
|
"RemoveAds" = "Supprimer les publicités";
|
||||||
"NoDarkBgDesc" = "Supprime l'arrière-plan sombre de l'overlay.";
|
"RemoveAdsDesc" = "Supprime les publicités intégrées.";
|
||||||
"NoEndScreenCards" = "Masquer les cartes de fin d'écran";
|
"HideShorts" = "Masquer les vidéos Shorts";
|
||||||
"NoEndScreenCardsDesc" = "Masque les cartes de fin d'écran (vignettes) à la fin des vidéos.";
|
"HideShortsDesc" = "Masque les vidéos Shorts de la page d'accueil, des recommandations, etc. (Non appliqué à l'historique de visionnage)";
|
||||||
"NoFullscreenActions" = "Désactiver les actions en plein écran";
|
"KeepSubsShorts" = "Keep Shorts in Subscriptions";
|
||||||
"NoFullscreenActionsDesc" = "Désactive le panneau d'actions en mode plein écran.";
|
"KeepSubsShortsDesc" = "Prevents removing Shorts from Subscriptions tab.";
|
||||||
"PersistentProgressBar" = "Barre de progression persistante";
|
"RemoveCommunityPosts" = "Remove community posts";
|
||||||
"PersistentProgressBarDesc" = " Affiche toujours la barre de progression dans le lecteur ";
|
"RemoveCommunityPostsDesc" = "Removes community posts from the feed.";
|
||||||
"NoRelatedVids" = "Pas de vidéos associées dans l'overlay";
|
"RemoveMoreTopics" = "Remove \"More topics\"";
|
||||||
"NoRelatedVidsDesc" = "Supprime les vidéos associées affichées dans l'overlay en faisant glisser vers le haut.";
|
"RemoveMoreTopicsDesc" = "Removes \"More topics\" from the feed.";
|
||||||
"NoPromotionCards" = "Masquer les cartes de promotion payante";
|
"FixAlbums" = "Réparer les vignettes";
|
||||||
"NoPromotionCardsDesc" = "Masque la carte \"Comprend des promotions payantes\" dans les vidéos avec promotions incluses.";
|
"FixAlbumsDesc" = "Répare l'affichage des vignettes pour les utilisateurs de Russie.";
|
||||||
"NoWatermarks" = "Masquer les filigranes";
|
|
||||||
"NoWatermarksDesc" = "Masque les filigranes de chaîne dans le lecteur.";
|
"Player" = "Lecteur";
|
||||||
|
"Player.Overlay" = "Overlay";
|
||||||
"Player" = "Lecteur";
|
"SpeedControls" = "Speed controls";
|
||||||
"Miniplayer" = "Activer le mini-lecteur";
|
"SpeedControlsDesc" = "Shows speed control buttons on overlay";
|
||||||
"MiniplayerDesc" = "Active le mini-lecteur pour les vidéos qui n'étaient pas initialement conçues pour cela, comme les vidéos destinées aux enfants.";
|
"HideAutoplay" = "Masquer le toggle de lecture automatique";
|
||||||
"PortraitFullscreen" = "Mode plein écran en portrait";
|
"HideAutoplayDesc" = "Masque le toggle de lecture automatique de l'overlay.";
|
||||||
"PortraitFullscreenDesc" = "Active la prise en charge du mode plein écran en portrait.";
|
"HideSubs" = "Masquer le bouton Sous-titres";
|
||||||
"CopyWithTimestamp" = "Copier les liens avec horodatage";
|
"HideSubsDesc" = "Masque le bouton Sous-titres de l'overlay.";
|
||||||
"CopyWithTimestampDesc" = "Permet de copier les liens avec horodatage dans le presse-papiers en appuyant sur le bouton de pause.";
|
"HidePrevNext" = "Masquer les boutons Précédent et Suivant";
|
||||||
"DisableAutoplay" = "Désactiver la lecture automatique des vidéos";
|
"HidePrevNextDesc" = "Masque les boutons vidéo Précédent et Suivant de l'overlay.";
|
||||||
"DisableAutoplayDesc" = "Empêche la lecture des vidéos après ouverture.";
|
"ReplacePrevNext" = "Boutons Avance rapide et Retour rapide";
|
||||||
"DisableAutoCaptions" = "Désactiver les sous-titres automatiques";
|
"ReplacePrevNextDesc" = "Remplace les boutons vidéo Précédent et Suivant par des boutons Avance rapide et Retour rapide dans l'overlay.";
|
||||||
"DisableAutoCaptionsDesc" = "Empêche l'activation des sous-titres automatique.";
|
"NoDarkBg" = "Supprimer l'arrière-plan sombre";
|
||||||
"NoContentWarning" = "Passer l'avertissement de contenu";
|
"NoDarkBgDesc" = "Supprime l'arrière-plan sombre de l'overlay.";
|
||||||
"NoContentWarningDesc" = "Ignore le message d'avertissement de contenu sensible.";
|
"NoEndScreenCards" = "Masquer les cartes de fin d'écran";
|
||||||
"ClassicQuality" = "Qualité vidéo classique";
|
"NoEndScreenCardsDesc" = "Masque les cartes de fin d'écran (vignettes) à la fin des vidéos.";
|
||||||
"ClassicQualityDesc" = "Rétablit le menu de sélection de la qualité vidéo classique.";
|
"NoAutonavEndScreenCards" = "Hide auto-play end screen";
|
||||||
"ExtraSpeedOptions" = "Options de vitesse supplémentaires";
|
"NoAutonavEndScreenCardsDesc" = "Hides the screen that shows what you can play next after playback ended. Disabling this option also disables auto-play";
|
||||||
"ExtraSpeedOptionsDesc" = "Ajoute des options de vitesse de lecture supplémentaires au menu de vitesse.";
|
"NoFullscreenActions" = "Désactiver les actions en plein écran";
|
||||||
"DontSnap2Chapter" = "Désactiver la coupure au chapitre";
|
"NoFullscreenActionsDesc" = "Désactive le panneau d'actions en mode plein écran.";
|
||||||
"DontSnap2ChapterDesc" = "Désactive le passage à l'épisode suivant en double tapant.";
|
"PersistentProgressBar" = "Barre de progression persistante";
|
||||||
"RedProgressBar" = "Barre de progression rouge";
|
"PersistentProgressBarDesc" = " Affiche toujours la barre de progression dans le lecteur ";
|
||||||
"RedProgressBarDesc" = "Ramène la barre de progression rouge.";
|
"StockVolumeHUD" = "Stock volume HUD";
|
||||||
"NoHints" = "Désactiver les indices";
|
"StockVolumeHUDDesc" = "Displays system volume HUD in fullscreen.";
|
||||||
"NoHintsDesc" = "Désactive les indices de l'auteur qui apparaissent dans le coin supérieur droit pendant la lecture.";
|
"NoRelatedVids" = "Pas de vidéos associées dans l'overlay";
|
||||||
"NoFreeZoom" = "Désactiver le geste de zoom libre";
|
"NoRelatedVidsDesc" = "Supprime les vidéos associées affichées dans l'overlay en faisant glisser vers le haut.";
|
||||||
"NoFreeZoomDesc" = "Désactive les nouveaux gestes de zoom libre.";
|
"NoPromotionCards" = "Masquer les cartes de promotion payante";
|
||||||
"AutoFullscreen" = "Lire les vidéos en plein écran";
|
"NoPromotionCardsDesc" = "Masque la carte \"Comprend des promotions payantes\" dans les vidéos avec promotions incluses.";
|
||||||
"AutoFullscreenDesc" = "Lance automatiquement les vidéos en mode plein écran.";
|
"NoWatermarks" = "Masquer les filigranes";
|
||||||
"ExitFullscreen" = "Quitter le mode plein écran à la fin";
|
"NoWatermarksDesc" = "Masque les filigranes de chaîne dans le lecteur.";
|
||||||
"ExitFullscreenDesc" = "Quitte le mode plein écran à la fin de la lecture de la vidéo.";
|
"VideoEndTime" = "Show playback end time";
|
||||||
"NoDoubleTap2Seek" = "Désactiver le double tap pour chercher";
|
"VideoEndTimeDesc" = "Adds video playback end time to the player bar.";
|
||||||
"NoDoubleTap2SeekDesc" = "Désactive le geste de double tap pour chercher.";
|
"24hrFormat" = "24-hour format";
|
||||||
|
"24hrFormatDesc" = "Shows end time in 24-hour format.";
|
||||||
"Tabbar" = "Barre d'onglets";
|
|
||||||
"RemoveLabels" = "Supprimer les sous-titres";
|
"Player.Interface" = "Interface";
|
||||||
"RemoveLabelsDesc" = "Supprime les sous-titres des onglets.";
|
"PortraitFullscreen" = "Mode plein écran en portrait";
|
||||||
"RemoveIndicators" = "Supprimer les indicateurs";
|
"PortraitFullscreenDesc" = "Active la prise en charge du mode plein écran en portrait.";
|
||||||
"RemoveIndicatorsDesc" = "Supprime les indicateurs d'onglets.";
|
"ClassicQuality" = "Qualité vidéo classique";
|
||||||
"ReExplore" = "Remplacer l'onglet Shorts par l'onglet Explorer";
|
"ClassicQualityDesc" = "Rétablit le menu de sélection de la qualité vidéo classique.";
|
||||||
"ReExploreDesc" = "Affiche l'onglet Explorer à la place de l'onglet Shorts comme dans les anciennes versions de YouTube.";
|
"ExtraSpeedOptions" = "Options de vitesse supplémentaires";
|
||||||
"AddExplore" = "Ajouter l'onglet Explorer";
|
"ExtraSpeedOptionsDesc" = "Ajoute des options de vitesse de lecture supplémentaires au menu de vitesse.";
|
||||||
"AddExploreDesc" = "Ajoute l'onglet Explorer à la barre d'onglets.";
|
"RedProgressBar" = "Barre de progression rouge";
|
||||||
"HideShortsTab" = "Masquer l'onglet Shorts";
|
"RedProgressBarDesc" = "Ramène la barre de progression rouge.";
|
||||||
"HideShortsTabDesc" = "Masque l'onglet Shorts de la barre d'onglets";
|
"NoPlayerRemixButton" = "Supprimer le bouton de remix";
|
||||||
"HideSubscriptionsTab" = "Masquer l'onglet Abonnements";
|
"NoPlayerRemixButtonDesc" = "Supprime le bouton de remix sous le lecteur.";
|
||||||
"HideSubscriptionsTabDesc" = "Masque l'onglet Abonnements de la barre d'onglets";
|
"NoPlayerClipButton" = "Supprimer le bouton de clip";
|
||||||
"HideUploadButton" = "Masquer le bouton de téléchargement";
|
"NoPlayerClipButtonDesc" = "Supprime le bouton de clip sous le lecteur.";
|
||||||
"HideUploadButtonDesc" = "Masque le bouton de téléchargement de la barre d'onglets";
|
"NoPlayerDownloadButton" = "Supprimer le bouton de téléchargement";
|
||||||
"HideLibraryTab" = "Masquer l'onglet Bibliothèque";
|
"NoPlayerDownloadButtonDesc" = "Supprime le bouton de téléchargement sous le lecteur.";
|
||||||
"HideLibraryTabDesc" = "Masque l'onglet Bibliothèque de la barre d'onglets";
|
|
||||||
|
"Player.Actions" = "Actions";
|
||||||
"Shorts" = "Shorts";
|
"BackgroundPlayback" = "Lecture en arrière-plan";
|
||||||
"ShortsOnlyMode" = "Mode Shorts uniquement";
|
"BackgroundPlaybackDesc" = "Active la lecture en arrière-plan.";
|
||||||
"ShortsOnlyModeDesc" = "Limite les fonctionnalités de YouTube à la visualisation des Shorts uniquement.";
|
"Miniplayer" = "Activer le mini-lecteur";
|
||||||
"HideShorts" = "Masquer les vidéos Shorts";
|
"MiniplayerDesc" = "Active le mini-lecteur pour les vidéos qui n'étaient pas initialement conçues pour cela, comme les vidéos destinées aux enfants.";
|
||||||
"HideShortsDesc" = "Masque les vidéos Shorts de la page d'accueil, des recommandations, etc. (Non appliqué à l'historique de visionnage)";
|
"DisableAutoplay" = "Désactiver la lecture automatique des vidéos";
|
||||||
"ShortsProgress" = "Activer la barre de progression";
|
"DisableAutoplayDesc" = "Empêche la lecture des vidéos après ouverture.";
|
||||||
"ShortsProgressDesc" = "Affiche la barre de progression dans l'overlay Shorts.";
|
"DisableAutoCaptions" = "Désactiver les sous-titres automatiques";
|
||||||
"PinchToFullscreenShorts" = "Pincer pour plein écran";
|
"DisableAutoCaptionsDesc" = "Empêche l'activation des sous-titres automatique.";
|
||||||
"PinchToFullscreenShortsDesc" = "Gère la visibilité de l'overlay avec les gestes de pincement, affichant les Shorts en mode plein écran.";
|
"NoContentWarning" = "Passer l'avertissement de contenu";
|
||||||
"ShortsToRegular" = "Shorts vers vidéos normales";
|
"NoContentWarningDesc" = "Ignore le message d'avertissement de contenu sensible.";
|
||||||
"ShortsToRegularDesc" = "Ouvre les vidéos Shorts en tant que vidéos normales.";
|
"NoHints" = "Désactiver les indices";
|
||||||
"ResumeShorts" = "Ne pas démarrer depuis l'onglet Shorts";
|
"NoHintsDesc" = "Désactive les indices de l'auteur qui apparaissent dans le coin supérieur droit pendant la lecture.";
|
||||||
"ResumeShortsDesc" = "Empêche de démarrer depuis les vidéos Shorts lors de l'ouverture de l'application, ce qui se produit si YouTube était fermé pendant la lecture des Shorts.";
|
"AutoFullscreen" = "Lire les vidéos en plein écran";
|
||||||
"HideShortsLogo" = "Masquer le logo Shorts";
|
"AutoFullscreenDesc" = "Lance automatiquement les vidéos en mode plein écran.";
|
||||||
"HideShortsLogoDesc" = "Masque le logo Shorts dans le coin supérieur gauche.";
|
"ExitFullscreen" = "Quitter le mode plein écran à la fin";
|
||||||
"HideShortsSearch" = "Masquer le bouton de recherche";
|
"ExitFullscreenDesc" = "Quitte le mode plein écran à la fin de la lecture de la vidéo.";
|
||||||
"HideShortsSearchDesc" = "Masque le bouton de recherche de l'overlay Shorts.";
|
|
||||||
"HideShortsCamera" = "Masquer le bouton de l'appareil photo";
|
"Player.Gestures" = "Gestures";
|
||||||
"HideShortsCameraDesc" = "Masque le bouton de l'appareil photo de l'overlay Shorts.";
|
"AdjustWithFinger" = "Adjust speed by gestures";
|
||||||
"HideShortsMore" = "Masquer le bouton Plus (⋮)";
|
"AdjustWithFingerDesc" = "Allows adjusting playback speed by long press on player and moving finger up and down";
|
||||||
"HideShortsMoreDesc" = "Masque le bouton Plus (⋮) de l'overlay Shorts. Il est également accessible en appuyant longuement sur l'écran.";
|
"PreserveSpeed" = "Preserve Speed";
|
||||||
"HideShortsSubscriptions" = "Masquer le bouton Abonnements";
|
"PreserveSpeedDesc" = "Preserves adjusted speed after gesture completion";
|
||||||
"HideShortsSubscriptionsDesc" = "Masque le bouton Abonnements qui apparaît lorsque les Shorts sont en pause.";
|
"TwoFingerTapToPause" = "Pause using two fingers";
|
||||||
"HideShortsLike" = "Masquer le bouton J'aime";
|
"TwoFingerTapToPauseDesc" = "Pause/Resume playback by tapping on the screen using two fingers.";
|
||||||
"HideShortsLikeDesc" = "Masque le bouton J'aime de l'overlay Shorts.";
|
"TwoFingerPanToBrightness" = "Adjust brightness";
|
||||||
"HideShortsDislike" = "Masquer le bouton Je n'aime pas";
|
"TwoFingerPanToBrightnessDesc" = "Allows adjusting screen brigthness by sliding up/down using two fingers.";
|
||||||
"HideShortsDislikeDesc" = "Masque le bouton Je n'aime pas de l'overlay Shorts.";
|
"CopyWithTimestamp" = "Copier les liens avec horodatage";
|
||||||
"HideShortsComments" = "Masquer le bouton Commentaires";
|
"CopyWithTimestampDesc" = "Permet de copier les liens avec horodatage dans le presse-papiers en appuyant sur le bouton de pause.";
|
||||||
"HideShortsCommentsDesc" = "Masque le bouton Commentaires de l'overlay Shorts.";
|
"PauseOnOverlay" = "Pause on overlay";
|
||||||
"HideShortsRemix" = "Masquer le bouton Remix";
|
"PauseOnOverlayDesc" = "Sets playback on pause if overlay appears.";
|
||||||
"HideShortsRemixDesc" = "Masque le bouton Remix de l'overlay Shorts.";
|
"DontSnap2Chapter" = "Désactiver la coupure au chapitre";
|
||||||
"HideShortsShare" = "Masquer le bouton Partager";
|
"DontSnap2ChapterDesc" = "Désactive le passage à l'épisode suivant en double tapant.";
|
||||||
"HideShortsShareDesc" = "Masque le bouton Partager de l'overlay Shorts.";
|
"NoTwoFingerSnapToChapter" = "Disable two finger double tap";
|
||||||
"HideShortsAvatars" = "Masquer les avatars des chaînes";
|
"NoTwoFingerSnapToChapterDesc" = "Disables two finger double tap snap to chapter gesture.";
|
||||||
"HideShortsAvatarsDesc" = "Masque la photo de profil dans le coin inférieur droit.";
|
"NoFreeZoom" = "Désactiver le geste de zoom libre";
|
||||||
"HideShortsThanks" = "Masquer le bouton Superthanks";
|
"NoFreeZoomDesc" = "Désactive les nouveaux gestes de zoom libre.";
|
||||||
"HideShortsThanksDesc" = "Masque le bouton Superthanks (Don) de l'overlay Shorts.";
|
"NoDoubleTap2Seek" = "Désactiver le double tap pour chercher";
|
||||||
"HideShortsSource" = "Cacher la source des Shorts";
|
"NoDoubleTap2SeekDesc" = "Désactive le geste de double tap pour chercher.";
|
||||||
"HideShortsSourceDesc" = "Masque les sources des Shorts sous le nom de la chaîne.";
|
|
||||||
"HideShortsChannelName" = "Masquer le nom de la chaîne";
|
"Shorts" = "Shorts";
|
||||||
"HideShortsChannelNameDesc" = "Masque le nom de la chaîne et le bouton S'abonner de l'overlay Shorts.";
|
"ShortsOnlyMode" = "Mode Shorts uniquement";
|
||||||
"HideShortsDescription" = "Masquer la description";
|
"ShortsOnlyModeDesc" = "Limite les fonctionnalités de YouTube à la visualisation des Shorts uniquement.";
|
||||||
"HideShortsDescriptionDesc" = "Masque la description des Shorts sous le nom de la chaîne.";
|
"AutoSkipShorts" = "Auto-skip Shorts";
|
||||||
"HideShortsAudioTrack" = "Masquer la piste audio";
|
"AutoSkipShortsDesc" = "Moves to the next video when the current video playback finishes.";
|
||||||
"HideShortsAudioTrackDesc" = "Masque la piste audio sous la description des Shorts.";
|
"ShortsProgress" = "Activer la barre de progression";
|
||||||
|
"ShortsProgressDesc" = "Affiche la barre de progression dans l'overlay Shorts.";
|
||||||
"Other" = "Autre";
|
"SpeedByLongTap" = "Increase Shorts playback rate";
|
||||||
"CopyVideoInfo" = "Copier les informations vidéo";
|
"SpeedByLongTapDesc" = "Allows to speed up playback by long pressing on a certain part of the screen.";
|
||||||
"CopyVideoInfoDesc" = "Ajout d'un bouton permettant de copier le titre et la description de la vidéo dans le panneau Description de la vidéo.";
|
"SpeedLocation" = "Activation location";
|
||||||
"PostManager" = "Save post information";
|
"LeftSide" = "Left side";
|
||||||
"PostManagerDesc" = "Allows to copy post text and save post as image by long tap.";
|
"RightSide" = "Right side";
|
||||||
"SavePostImage" = "Enregistrer l'image des publications de la communauté";
|
"PinchToFullscreenShorts" = "Pincer pour plein écran";
|
||||||
"SavePostImageDesc" = "Enregistre l'image des publications de la communauté dans l'application Photos en appuyant longuement.";
|
"PinchToFullscreenShortsDesc" = "Gère la visibilité de l'overlay avec les gestes de pincement, affichant les Shorts en mode plein écran.";
|
||||||
"SaveProfilePhoto" = "Enregistrer la photo de profil";
|
"ShortsToRegular" = "Shorts vers vidéos normales";
|
||||||
"SaveProfilePhotoDesc" = "Enregistre la photo de profil dans l'application Photos en appuyant longuement.";
|
"ShortsToRegularDesc" = "Ouvre les vidéos Shorts en tant que vidéos normales.";
|
||||||
"CommentManager" = "Save comment information";
|
"HideShortsLogo" = "Masquer le logo Shorts";
|
||||||
"CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
|
"HideShortsLogoDesc" = "Masque le logo Shorts dans le coin supérieur gauche.";
|
||||||
"FixAlbums" = "Réparer les couvertures";
|
"HideShortsSearch" = "Masquer le bouton de recherche";
|
||||||
"FixAlbumsDesc" = "Répare l'affichage des couvertures pour les utilisateurs de Russie.";
|
"HideShortsSearchDesc" = "Masque le bouton de recherche de l'overlay Shorts.";
|
||||||
"RemovePlayNext" = "Supprimer \"Placer en première position dans la file d'attente\"";
|
"HideShortsCamera" = "Masquer le bouton de l'appareil photo";
|
||||||
"RemovePlayNextDesc" = "Supprime l'option \"Placer en première position dans la file d'attente\" du menu.";
|
"HideShortsCameraDesc" = "Masque le bouton de l'appareil photo de l'overlay Shorts.";
|
||||||
"NoContinueWatching" = "Supprimer \"Continuer à regarder\"";
|
"HideShortsMore" = "Masquer le bouton Plus (⋮)";
|
||||||
"NoContinueWatchingDesc" = "Supprime la section \"Continuer à regarder\" contenant les vidéos inachevées de la page d'accueil.";
|
"HideShortsMoreDesc" = "Masque le bouton Plus (⋮) de l'overlay Shorts. Il est également accessible en appuyant longuement sur l'écran.";
|
||||||
"NoSearchHistory" = "Masquer l'historique de recherche";
|
"HideShortsSubscriptions" = "Masquer le bouton Abonnements";
|
||||||
"NoSearchHistoryDesc" = "Masque visuellement l'historique de recherche et les suggestions. Note : Votre historique de recherche sera toujours accessible dans vos autres clients YouTube.";
|
"HideShortsSubscriptionsDesc" = "Masque le bouton Abonnements qui apparaît lorsque les Shorts sont en pause.";
|
||||||
"NoRelatedWatchNexts" = "Masquer toutes les vidéos sous le lecteur";
|
|
||||||
"NoRelatedWatchNextsDesc" = "Masque toutes les vidéos sous le lecteur, ne laissant que les informations sur la vidéo et la section des commentaires.";
|
"Tabbar" = "Barre d'onglets";
|
||||||
"StickSortComments" = "Épingler l'en-tête des commentaires";
|
"RemoveLabels" = "Supprimer les sous-titres";
|
||||||
"StickSortCommentsDesc" = "Épingle l'en-tête de tri des commentaires (Meilleurs, Plus récents) pour qu'il ne disparaisse pas pendant le défilement.";
|
"RemoveLabelsDesc" = "Supprime les sous-titres des onglets.";
|
||||||
"HideSortComments" = "Masquer l'en-tête des commentaires";
|
"RemoveIndicators" = "Supprimer les indicateurs";
|
||||||
"HideSortCommentsDesc" = "Masque l'en-tête de tri des commentaires (Meilleurs, Plus récents) pour qu'il n'apparaisse jamais.";
|
"RemoveIndicatorsDesc" = "Supprime les indicateurs d'onglets.";
|
||||||
"PlaylistOldMinibar" = "Ancienne barre latérale de lecture";
|
"ReExplore" = "Remplacer l'onglet Shorts par l'onglet Explorer";
|
||||||
"PlaylistOldMinibarDesc" = "Remplace le nouveau panneau de lecture flottant par l'ancien.";
|
"ReExploreDesc" = "Affiche l'onglet Explorer à la place de l'onglet Shorts comme dans les anciennes versions de YouTube.";
|
||||||
"DisableRTL" = "Désactiver le formatage de droite à gauche";
|
"AddExplore" = "Ajouter l'onglet Explorer";
|
||||||
"DisableRTLDesc" = "Affiche le texte de force en format de gauche à droite (LTR) pour les langues qui sont initialement affichées de droite à gauche (RTL).";
|
"AddExploreDesc" = "Ajoute l'onglet Explorer à la barre d'onglets.";
|
||||||
|
"HideShortsTab" = "Masquer l'onglet Shorts";
|
||||||
"Startup" = "Page de démarrage";
|
"HideShortsTabDesc" = "Masque l'onglet Shorts de la barre d'onglets";
|
||||||
"Home" = "Accueil";
|
"HideSubscriptionsTab" = "Masquer l'onglet Abonnements";
|
||||||
"Explore" = "Explorer";
|
"HideSubscriptionsTabDesc" = "Masque l'onglet Abonnements de la barre d'onglets";
|
||||||
"ShortsTab" = "Shorts";
|
"HideUploadButton" = "Masquer le bouton de téléchargement";
|
||||||
"Subscriptions" = "Abonnements";
|
"HideUploadButtonDesc" = "Masque le bouton de téléchargement de la barre d'onglets";
|
||||||
"Library" = "Bibliothèque";
|
"HideLibraryTab" = "Masquer l'onglet Bibliothèque";
|
||||||
"Warning" = "Avertissement";
|
"HideLibraryTabDesc" = "Hides Library tab from the Tab bar.\n\nThis tab can be restored by long pressing Home tab.";
|
||||||
"TabIsHidden" = "L'onglet masqué ne peut pas être sélectionné comme page de démarrage";
|
|
||||||
|
"Interface" = "Interface";
|
||||||
"DonateViaPayPal" = "Faire un don via PayPal";
|
"OledTheme" = "Oled theme";
|
||||||
"SupportViaGhSponsors" = "Soutenir le développement via les sponsors Github";
|
"OledThemeDesc" = "Turns all dark colors to black";
|
||||||
"Version" = "Version";
|
"NativeShare" = "Native share sheet";
|
||||||
"About" = "À propos";
|
"NativeShareDesc" = "Uses system share sheet to share media";
|
||||||
"Credits" = "Crédits";
|
"RemoveInlineComment" = "Remove inline comment";
|
||||||
"Developer" = "Développeur YTLite";
|
"RemoveInlineCommentDesc" = "Removes comment section under the player.";
|
||||||
"ChineseSimplified" = "Localisation chinoise (simplifiée)";
|
"RemovePlayNext" = "Supprimer \"Placer en première position dans la file d'attente\"";
|
||||||
"ChineseTraditional" = "Localisation chinoise (traditionnelle)";
|
"RemovePlayNextDesc" = "Supprime l'option \"Placer en première position dans la file d'attente\" du menu.";
|
||||||
"French" = "Localisation française";
|
"RemoveDownloadMenu" = "Supprimer \"Télécharger\"";
|
||||||
"Spanish" = "Localisation espagnole";
|
"RemoveDownloadMenuDesc" = "Supprime l'option \"Télécharger\" du menu.";
|
||||||
"Japanese" = "Localisation japonaise";
|
"RemoveWatchLaterMenu" = "Supprimer \"Enregistrer pour plus tard\"";
|
||||||
"Vietnamese" = "Localisation vietnamienne";
|
"RemoveWatchLaterMenuDesc" = "Supprime l'option \"Enregistrer pour plus tard\" du menu.";
|
||||||
"Advanced" = "Mode avancé";
|
"RemoveSaveToPlaylistMenu" = "Supprimer \"Enregistrer dans une playlist\"";
|
||||||
"AdvancedModeReminder" = "Voulez-vous activer le mode avancé pour YTLite ?\n\nCe mode offre plus de 50 options supplémentaires pour personnaliser et optimiser votre expérience YouTube. Vous pouvez l'activer/désactiver ultérieurement depuis Paramètres → %@ → %@ → %@.";
|
"RemoveSaveToPlaylistMenuDesc" = "Supprime l'option \"Enregistrer dans une playlist\" du menu.";
|
||||||
"ClearCache" = "Effacer le cache";
|
"RemoveShareMenu" = "Supprimer \"Partager\"";
|
||||||
"ResetSettings" = "Réinitialiser les paramètres YTLite";
|
"RemoveShareMenuDesc" = "Supprime l'option \"Partager\" du menu.";
|
||||||
"ResetMessage" = "Cette option réinitialisera les paramètres YTLite par défaut et fermera YouTube.\n\nÊtes-vous sûr de vouloir continuer ?";
|
"RemoveNotInterestedMenu" = "Supprimer \"Pas intéressé\"";
|
||||||
"ShortsOnlyWarning" = "Êtes-vous sûr de vouloir activer ce mode?\n\nDans ce mode, vous ne pourrez regarder que des vidéos Shorts et vous ne pourrez rien d'autre faire.\n\nVous pouvez désactiver le mode Shorts Only en appuyant longuement avec deux doigts dans le lecteur Shorts.";
|
"RemoveNotInterestedMenuDesc" = "Supprime l'option \"Pas intéressé\" du menu.";
|
||||||
"ShortsModeTurnedOff" = "Le mode Shorts uniquement a été désactivé";
|
"RemoveDontRecommendMenu" = "Supprimer \"Ne pas recommander la chaîne\"";
|
||||||
"Yes" = "Oui";
|
"RemoveDontRecommendMenuDesc" = "Supprime l'option \"Ne pas recommander la chaîne\" du menu.";
|
||||||
"No" = "Non";
|
"RemoveReportMenu" = "Supprimer \"Signaler\"";
|
||||||
|
"RemoveReportMenuDesc" = "Supprime l'option \"Signaler\" du menu.";
|
||||||
"SelectAction" = "Sélectionner une action";
|
"NoContinueWatching" = "Supprimer \"Continuer à regarder\"";
|
||||||
"CopyTitle" = "Copier le titre";
|
"NoContinueWatchingDesc" = "Supprime la section \"Continuer à regarder\" contenant les vidéos inachevées de la page d'accueil.";
|
||||||
"CopyDescription" = "Copier la description";
|
"NoSearchHistory" = "Masquer l'historique de recherche";
|
||||||
"CopyPostText" = "Copy post text";
|
"NoSearchHistoryDesc" = "Masque visuellement l'historique de recherche et les suggestions. Note : Votre historique de recherche sera toujours accessible dans vos autres clients YouTube.";
|
||||||
"SavePostAsImage" = "Save post as image";
|
"NoRelatedWatchNexts" = "Masquer toutes les vidéos sous le lecteur";
|
||||||
"CopyPostAsImage" = "Copy post as image";
|
"NoRelatedWatchNextsDesc" = "Masque toutes les vidéos sous le lecteur, ne laissant que les informations sur la vidéo et la section des commentaires.";
|
||||||
"CopyCommentText" = "Copy comment text";
|
"StickSortComments" = "Épingler l'en-tête des commentaires";
|
||||||
"SaveCommentAsImage" = "Save comment as image";
|
"StickSortCommentsDesc" = "Épingle l'en-tête de tri des commentaires (Meilleurs, Plus récents) pour qu'il ne disparaisse pas pendant le défilement.";
|
||||||
"CopyCommentAsImage" = "Copy comment as image";
|
"HideSortComments" = "Masquer l'en-tête des commentaires";
|
||||||
"Cancel" = "Annuler";
|
"HideSortCommentsDesc" = "Masque l'en-tête de tri des commentaires (Meilleurs, Plus récents) pour qu'il n'apparaisse jamais.";
|
||||||
"Copied" = "Copié dans le presse-papiers";
|
"PlaylistOldMinibar" = "Ancienne barre latérale de lecture";
|
||||||
"Saved" = "Enregistré dans Photos";
|
"PlaylistOldMinibarDesc" = "Remplace le nouveau panneau de lecture flottant par l'ancien.";
|
||||||
"Done" = "Terminé";
|
"StartupAnimation" = "Startup animation";
|
||||||
"Error" = "Erreur";
|
"StartupAnimationDesc" = "Displays YouTube startup loading animation";
|
||||||
|
"OldYTUI" = "Old UI";
|
||||||
|
"OldYTUIDesc" = "Spoofs YouTube version so that it will return old interface";
|
||||||
|
"DisableRTL" = "Désactiver le formatage de droite à gauche";
|
||||||
|
"DisableRTLDesc" = "Affiche le texte de force en format de gauche à droite (LTR) pour les langues qui sont initialement affichées de droite à gauche (RTL).";
|
||||||
|
|
||||||
|
"HoldToSpeed" = "Hold to speed";
|
||||||
|
"DefaultPlaybackRate" = "Default playback rate";
|
||||||
|
"PlaybackQualityOnWiFi" = "Qualité de lecture sur WiFi";
|
||||||
|
"PlaybackQualityOnCellular" = "Qualité de lecture sur réseau cellulaire";
|
||||||
|
|
||||||
|
"Startup" = "Page de démarrage";
|
||||||
|
"Home" = "Accueil";
|
||||||
|
"Explore" = "Explorer";
|
||||||
|
"ShortsTab" = "Shorts";
|
||||||
|
"Subscriptions" = "Abonnements";
|
||||||
|
"Library" = "Bibliothèque";
|
||||||
|
"Warning" = "Avertissement";
|
||||||
|
"TabIsHidden" = "L'onglet masqué ne peut pas être sélectionné comme page de démarrage";
|
||||||
|
|
||||||
|
"SupportDevelopment" = "Soutenir le développement";
|
||||||
|
"SupportDevelopmentDesc" = "Si vous aimez YTLite et souhaitez soutenir son développement, vous pouvez le faire en utilisant l'une des méthodes pratiques ci-dessous.\nMerci❤";
|
||||||
|
"Contributors" = "Contributors";
|
||||||
|
"OpenSourceLibs" = "Open Source Libraries";
|
||||||
|
"Preferences" = "%@ preferences";
|
||||||
|
"Version" = "Version";
|
||||||
|
"About" = "À propos";
|
||||||
|
"Credits" = "Crédits";
|
||||||
|
"Developer" = "Développeur YTLite";
|
||||||
|
"SpecialThanks" = "Special thanks";
|
||||||
|
"SpecialThanks.Test" = "Invaluable contribution to tweak testing";
|
||||||
|
"ChineseSimplified" = "Localisation chinoise (simplifiée)";
|
||||||
|
"ChineseTraditional" = "Localisation chinoise (traditionnelle)";
|
||||||
|
"French" = "Localisation française";
|
||||||
|
"Spanish" = "Localisation espagnole";
|
||||||
|
"Japanese" = "Localisation japonaise";
|
||||||
|
"Vietnamese" = "Localisation vietnamienne";
|
||||||
|
"Advanced" = "Mode avancé";
|
||||||
|
"AdvancedDesc" = "Mode plus personnalisable";
|
||||||
|
"AdvancedModeEnabled" = "Advanced mode has been enabled";
|
||||||
|
"AdvancedModeDisabled" = "Advanced mode has been disabled";
|
||||||
|
"AdvancedModeReminder" = "Voulez-vous activer le mode avancé pour YTLite ?\n\nCe mode offre plus de 50 options supplémentaires pour personnaliser et optimiser votre expérience YouTube. Vous pouvez l'activer/désactiver ultérieurement depuis Paramètres → %@ → %@ → %@.";
|
||||||
|
"ClearCache" = "Effacer le cache";
|
||||||
|
"ClearCacheMessage" = "You're about to clear %@ of cache.\n\nDo you want to continue?";
|
||||||
|
"ImportPreferences" = "Import preferences";
|
||||||
|
"PreImportMessage" = "This action will replace the current preferences with those from the selected file.\n\nAre you sure you want to continue?";
|
||||||
|
"ExportPreferences" = "Export preferences";
|
||||||
|
"ResetSettings" = "Réinitialiser les paramètres YTLite";
|
||||||
|
"ResetMessage" = "Cette option réinitialisera les paramètres YTLite par défaut et fermera YouTube.\n\nÊtes-vous sûr de vouloir continuer ?";
|
||||||
|
"ShortsOnlyWarning" = "Êtes-vous sûr de vouloir activer ce mode?\n\nDans ce mode, vous ne pourrez regarder que des vidéos Shorts et vous ne pourrez rien d'autre faire.\n\nVous pouvez désactiver le mode Shorts Only en appuyant longuement avec deux doigts dans le lecteur Shorts.";
|
||||||
|
"ShortsModeTurnedOff" = "Le mode Shorts uniquement a été désactivé";
|
||||||
|
"LibraryAdded" = "The You/Library tab has been restored";
|
||||||
|
"LibraryRemoved" = "The You/Library tab has been removed";
|
||||||
|
"Yes" = "Oui";
|
||||||
|
"No" = "Non";
|
||||||
|
|
||||||
|
"Select" = "Select";
|
||||||
|
"Default" = "Par défaut";
|
||||||
|
"Best" = "Meilleure";
|
||||||
|
"Show" = "Show";
|
||||||
|
"Disable" = "Disable";
|
||||||
|
"Disabled" = "Disabled";
|
||||||
|
"PlaybackSpeed" = "Playback Speed";
|
||||||
|
"SpeedPreserved" = "Speed preserved";
|
||||||
|
"ResetSpeed" = "Reset";
|
||||||
|
|
||||||
|
"Brightness" = "Brightness";
|
||||||
|
"Toast.PlaybackSpeed" = "Playback Speed";
|
||||||
|
|
||||||
|
"SelectAction" = "Sélectionner une action";
|
||||||
|
"DownloadVideo" = "Download video";
|
||||||
|
"DownloadAudio" = "Download audio";
|
||||||
|
"SaveImage" = "Save image";
|
||||||
|
"CopyInformation" = "Copy information";
|
||||||
|
"CopyChannelName" = "Copy channel name";
|
||||||
|
"CopyTitle" = "Copier le titre";
|
||||||
|
"CopyDescription" = "Copier la description";
|
||||||
|
"CopyTimestampedLink" = "Copy link with timestamp";
|
||||||
|
"PlayInExternalPlayer" = "Play in external player";
|
||||||
|
"PlayInSystemPlayer" = "Play in system player";
|
||||||
|
"PlayInInfuse" = "Play in Infuse";
|
||||||
|
"PlayInVLC" = "Play in VLC";
|
||||||
|
"PlayerNotFound" = "Player not found";
|
||||||
|
"OpenAsRegularVideo" = "Open as regular video";
|
||||||
|
"CopyPostText" = "Copier le texte de la publication";
|
||||||
|
"SaveCurrentImage" = "Save current image";
|
||||||
|
"CopyCurrentImage" = "Copy current image";
|
||||||
|
"SavePostAsImage" = "Enregistrer la publication en tant qu'image";
|
||||||
|
"CopyPostAsImage" = "Copier la publication en tant qu'image";
|
||||||
|
"CopyCommentText" = "Copier le texte du commentaire";
|
||||||
|
"SaveCommentAsImage" = "Enregistrer le commentaire en tant qu'image";
|
||||||
|
"CopyCommentAsImage" = "Copier le commentaire en tant qu'image";
|
||||||
|
"SaveProfilePicture" = "Enregistrer la photo de profil";
|
||||||
|
"CopyProfilePicture" = "Copier la photo de profil";
|
||||||
|
"DownloadThumbnail" = "Save thumbnail";
|
||||||
|
"CopyThumbnail" = "Copy thumbnail";
|
||||||
|
"Cancel" = "Annuler";
|
||||||
|
"Cancelled" = "Cancelled";
|
||||||
|
"Copied" = "Copié dans le presse-papiers";
|
||||||
|
"Saved" = "Enregistré dans Photos";
|
||||||
|
"Done" = "Terminé";
|
||||||
|
"Error" = "Erreur";
|
||||||
|
"Error.Clipboard" = "Error. Check clipboard for more info";
|
||||||
|
"Error.PathIssue" = "Error. Problem with generating final path. Issue with media title?";
|
||||||
|
"Error.NoSpace" = "Insufficient space on the device.\n\nAt least %@ additional free space is required. Available free space: %@";
|
||||||
|
"Error.Multidownloading" = "Multi-downloading not available yet.";
|
||||||
|
"Error.FailedToImport" = "Failed to import preferences";
|
||||||
|
"DownloadingVideo" = "Downloading video";
|
||||||
|
"DownloadingAudio" = "Downloading audio";
|
||||||
|
"Converting" = "Converting";
|
||||||
|
"RetryLogin" = "Workaround activated.\n\nPlease try again.";
|
||||||
|
"LoginInfo" = "App restart required after successful signing into Google account";
|
||||||
|
|
||||||
|
"Welcome.Download" = "Download Media";
|
||||||
|
"Welcome.DownloadDesc" = "Download your favorite content, whether it's Videos, Shorts, Audio, or Profile photos. Copy interesting posts and comments or save them as images";
|
||||||
|
"Welcome.Content" = "Adjust Interface";
|
||||||
|
"Welcome.ContentDesc" = "Remove unwanted content and interface elements. Enable true OLED dark mode";
|
||||||
|
"Welcome.Player" = "Setup Player Behavior";
|
||||||
|
"Welcome.PlayerDesc" = "Сustomize the player's behavior, auto-select quality and playback speed. Control using gestures";
|
||||||
|
"Welcome.More" = "And even more...";
|
||||||
|
"Welcome.MoreDesc" = "YouTube Plus includes over 50 different options, including features like saving preferences and clearing cache. Settings are available in the YouTube Plus section under YouTube settings";
|
||||||
|
"SupportMe" = "Support me";
|
||||||
|
"Continue" = "Continue";
|
||||||
|
|
||||||
|
"DonationReminder" = "Your support makes YTPlus better... Support through tweak settings";
|
||||||
|
"DontRemind" = "Turn off";
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 9.3 KiB |
@@ -1,219 +1,344 @@
|
|||||||
"General" = "一般";
|
"Downloading" = "Downloading";
|
||||||
"RemoveAds" = "広告を削除";
|
"DownloadManager" = "Download manager";
|
||||||
"RemoveAdsDesc" = "アプリ内の広告を削除します";
|
"DownloadManagerDesc" = "Replaces 'Download' button action under the player with a Download Manager, which allows downloading Video, Audio, Thumbnail Image, and Copying Video Information.\n\nTo download 2K+ videos, enable YTUHD tweak.";
|
||||||
"BackgroundPlayback" = "バックグラウンド再生";
|
"DownloadManagerYtl" = "Add as YouTube Plus button";
|
||||||
"BackgroundPlaybackDesc" = "バックグラウンドでの再生を有効にします";
|
"DownloadManagerYtlDesc" = "Adds YouTube Plus button for download manager under the player.";
|
||||||
|
"PostManager" = "Save post information";
|
||||||
"Navbar" = "ナビゲーションバー";
|
"PostManagerDesc" = "Allows to copy post text and save post as image by long tap.";
|
||||||
"RemoveCast" = "キャストボタンを非表示";
|
"SaveProfilePhoto" = "Save profile picture";
|
||||||
"RemoveCastDesc" = "ナビゲーションバーからキャストボタンを非表示にします";
|
"SaveProfilePhotoDesc" = "Saves profile picture to the Photos app by long tap.";
|
||||||
"RemoveNotifications" = "通知ボタンを非表示";
|
"CommentManager" = "Save comment information";
|
||||||
"RemoveNotificationsDesc" = "ナビゲーションバーから通知ボタンを非表示にします";
|
"CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
|
||||||
"RemoveSearch" = "検索ボタンを非表示";
|
|
||||||
"RemoveSearchDesc" = "ナビゲーションバーから検索ボタンを非表示にします";
|
"Navbar" = "ナビゲーションバー";
|
||||||
"RemoveVoiceSearch" = "音声検索ボタンを非表示";
|
"RemoveCast" = "キャストボタンを非表示";
|
||||||
"RemoveVoiceSearchDesc" = "ナビゲーションバーから音声検索ボタンを非表示にします";
|
"RemoveCastDesc" = "ナビゲーションバーからキャストボタンを非表示にします";
|
||||||
"StickyNavbar" = "ナビゲーションバーを固定";
|
"RemoveNotifications" = "通知ボタンを非表示";
|
||||||
"StickyNavbarDesc" = "スクロール中もナビゲーションバーを固定して表示します";
|
"RemoveNotificationsDesc" = "ナビゲーションバーから通知ボタンを非表示にします";
|
||||||
"NoSubbar" = "サブバーを非表示";
|
"RemoveSearch" = "検索ボタンを非表示";
|
||||||
"NoSubbarDesc" = "ナビゲーションバーの下にあるサブバー(すべて,音楽,ライブ など)を非表示にします";
|
"RemoveSearchDesc" = "ナビゲーションバーから検索ボタンを非表示にします";
|
||||||
"NoYTLogo" = "YouTubeロゴを削除";
|
"RemoveVoiceSearch" = "音声検索ボタンを非表示";
|
||||||
"NoYTLogoDesc" = "ナビゲーションバーのYouTubeロゴを非表示にします";
|
"RemoveVoiceSearchDesc" = "ナビゲーションバーから音声検索ボタンを非表示にします";
|
||||||
|
"RemoveSponsorBlock" = "Hide SponsorBlock button";
|
||||||
"Overlay" = "オーバーレイ";
|
"RemoveSponsorBlockDesc" = "Hides SponsorBlock button from the Navigation bar.";
|
||||||
"HideAutoplay" = "自動再生スイッチを非表示";
|
"StickyNavbar" = "ナビゲーションバーを固定";
|
||||||
"HideAutoplayDesc" = "オーバーレイから自動再生スイッチを非表示にします";
|
"StickyNavbarDesc" = "スクロール中もナビゲーションバーを固定して表示します";
|
||||||
"HideSubs" = "字幕ボタンを非表示";
|
"NoSubbar" = "サブバーを非表示";
|
||||||
"HideSubsDesc" = "オーバーレイから字幕ボタンを非表示にします";
|
"NoSubbarDesc" = "ナビゲーションバーの下にあるサブバー(すべて,音楽,ライブ など)を非表示にします";
|
||||||
"NoHUDMsgs" = "HUDメッセージを非表示";
|
"NoYTLogo" = "YouTubeロゴを削除";
|
||||||
"NoHUDMsgsDesc" = "プレーヤーからすべての機能メッセージを非表示にします。例:字幕がオン/オフになりました, ループ再生はオンになっています など";
|
"NoYTLogoDesc" = "ナビゲーションバーのYouTubeロゴを非表示にします";
|
||||||
"HidePrevNext" = "前へ/次へボタンを非表示";
|
"PremiumYTLogo" = "Set Premium YouTube logo";
|
||||||
"HidePrevNextDesc" = "オーバーレイから前へ/次へのビデオボタンを非表示にします";
|
"PremiumYTLogoDesc" = "Sets Premium YouTube logo in the Navigation bar.";
|
||||||
"ReplacePrevNext" = "早送り/巻き戻しボタンに置き換え";
|
|
||||||
"ReplacePrevNextDesc" = "オーバーレイの前へ/次へボタンを早送り/巻き戻しボタンに置き換えます";
|
"Feed" = "Feed";
|
||||||
"NoDarkBg" = "暗い背景を削除";
|
"RemoveAds" = "広告を削除";
|
||||||
"NoDarkBgDesc" = "オーバーレイの暗い背景を削除します";
|
"RemoveAdsDesc" = "アプリ内の広告を削除します";
|
||||||
"NoEndScreenCards" = "エンドスクリーンのホバーカードを非表示";
|
"HideShorts" = "ショート動画を非表示";
|
||||||
"NoEndScreenCardsDesc" = "動画の終わりに表示されるエンドスクリーン(サムネイル)を非表示にします";
|
"HideShortsDesc" = "ホーム, おすすめなどからショート動画を非表示にします(視聴履歴には適用されません)";
|
||||||
"NoFullscreenActions" = "フルスクリーンアクションを無効化";
|
"KeepSubsShorts" = "Keep Shorts in Subscriptions";
|
||||||
"NoFullscreenActionsDesc" = "フルスクリーンモードでのアクションパネルを無効にします";
|
"KeepSubsShortsDesc" = "Prevents removing Shorts from Subscriptions tab.";
|
||||||
"PersistentProgressBar" = "Persistent progress bar";
|
"RemoveCommunityPosts" = "Remove community posts";
|
||||||
"PersistentProgressBarDesc" = "Always shows progress bar in the player.";
|
"RemoveCommunityPostsDesc" = "Removes community posts from the feed.";
|
||||||
"NoRelatedVids" = "オーバーレイの関連動画を非表示";
|
"RemoveMoreTopics" = "Remove \"More topics\"";
|
||||||
"NoRelatedVidsDesc" = "スワイプアップでオーバーレイに表示される関連動画を非表示にします";
|
"RemoveMoreTopicsDesc" = "Removes \"More topics\" from the feed.";
|
||||||
"NoPromotionCards" = "有料プロモーションカードを非表示";
|
"FixAlbums" = "Fix covers";
|
||||||
"NoPromotionCardsDesc" = "プロモーションが含まれている動画の\"有料プロモーションを含む\"カードを非表示にします";
|
"FixAlbumsDesc" = "Fixes the display of covers for users from Russia.";
|
||||||
"NoWatermarks" = "ウォーターマークを非表示";
|
|
||||||
"NoWatermarksDesc" = "プレーヤーからチャンネルのウォーターマークを非表示にします";
|
"Player" = "プレーヤー";
|
||||||
|
"Player.Overlay" = "オーバーレイ";
|
||||||
"Player" = "プレーヤー";
|
"SpeedControls" = "Speed controls";
|
||||||
"Miniplayer" = "ミニプレーヤーを有効化";
|
"SpeedControlsDesc" = "Shows speed control buttons on overlay";
|
||||||
"MiniplayerDesc" = "ミニプレーヤーに対応していない動画(子供向けの動画など)でもミニプレーヤーを有効にします";
|
"HideAutoplay" = "自動再生スイッチを非表示";
|
||||||
"PortraitFullscreen" = "縦画面フルスクリーンモード";
|
"HideAutoplayDesc" = "オーバーレイから自動再生スイッチを非表示にします";
|
||||||
"PortraitFullscreenDesc" = "縦画面フルスクリーンモードをサポートします";
|
"HideSubs" = "字幕ボタンを非表示";
|
||||||
"CopyWithTimestamp" = "タイムスタンプ付きリンクをコピー";
|
"HideSubsDesc" = "オーバーレイから字幕ボタンを非表示にします";
|
||||||
"CopyWithTimestampDesc" = "一時停止ボタンを押すことで、タイムスタンプ付きリンクをクリップボードにコピーできます";
|
"HidePrevNext" = "前へ/次へボタンを非表示";
|
||||||
"DisableAutoplay" = "自動再生を無効化";
|
"HidePrevNextDesc" = "オーバーレイから前へ/次へのビデオボタンを非表示にします";
|
||||||
"DisableAutoplayDesc" = "アプリを開いた後に動画の自動再生を防止します";
|
"ReplacePrevNext" = "早送り/巻き戻しボタンに置き換え";
|
||||||
"DisableAutoCaptions" = "Disable auto captions";
|
"ReplacePrevNextDesc" = "オーバーレイの前へ/次へボタンを早送り/巻き戻しボタンに置き換えます";
|
||||||
"DisableAutoCaptionsDesc" = "Prevents automatic activation of captions.";
|
"NoDarkBg" = "暗い背景を削除";
|
||||||
"NoContentWarning" = "コンテンツ警告をスキップ";
|
"NoDarkBgDesc" = "オーバーレイの暗い背景を削除します";
|
||||||
"NoContentWarningDesc" = "不適切なコンテンツの警告メッセージをスキップします";
|
"NoEndScreenCards" = "エンドスクリーンのホバーカードを非表示";
|
||||||
"ClassicQuality" = "クラシックなビデオ品質";
|
"NoEndScreenCardsDesc" = "動画の終わりに表示されるエンドスクリーン(サムネイル)を非表示にします";
|
||||||
"ClassicQualityDesc" = "クラシックなビデオ品質選択メニューを復元します";
|
"NoAutonavEndScreenCards" = "Hide auto-play end screen";
|
||||||
"ExtraSpeedOptions" = "再生速度の追加オプション";
|
"NoAutonavEndScreenCardsDesc" = "Hides the screen that shows what you can play next after playback ended. Disabling this option also disables auto-play";
|
||||||
"ExtraSpeedOptionsDesc" = "プレーヤーメニューに追加の再生速度オプションを追加します";
|
"NoFullscreenActions" = "フルスクリーンアクションを無効化";
|
||||||
"DontSnap2Chapter" = "チャプターへのスナップを無効化";
|
"NoFullscreenActionsDesc" = "フルスクリーンモードでのアクションパネルを無効にします";
|
||||||
"DontSnap2ChapterDesc" = "ダブルタップジェスチャーで次のエピソードへスキップするのを無効にします";
|
"PersistentProgressBar" = "Persistent progress bar";
|
||||||
"RedProgressBar" = "赤いプログレスバー";
|
"PersistentProgressBarDesc" = "Always shows progress bar in the player.";
|
||||||
"RedProgressBarDesc" = "赤いプログレスバーを復元します";
|
"StockVolumeHUD" = "Stock volume HUD";
|
||||||
"NoHints" = "ヒントを無効化";
|
"StockVolumeHUDDesc" = "Displays system volume HUD in fullscreen.";
|
||||||
"NoHintsDesc" = "再生中に右上に表示される投稿者のヒントを無効にします";
|
"NoRelatedVids" = "オーバーレイの関連動画を非表示";
|
||||||
"NoFreeZoom" = "フリーズームジェスチャーを無効化";
|
"NoRelatedVidsDesc" = "スワイプアップでオーバーレイに表示される関連動画を非表示にします";
|
||||||
"NoFreeZoomDesc" = "新しいフリーズームジェスチャーを無効にします";
|
"NoPromotionCards" = "有料プロモーションカードを非表示";
|
||||||
"AutoFullscreen" = "動画をフルスクリーンで再生";
|
"NoPromotionCardsDesc" = "プロモーションが含まれている動画の\"有料プロモーションを含む\"カードを非表示にします";
|
||||||
"AutoFullscreenDesc" = "動画を自動的にフルスクリーンモードで再生します";
|
"NoWatermarks" = "ウォーターマークを非表示";
|
||||||
"ExitFullscreen" = "再生終了時にフルスクリーンモードを終了";
|
"NoWatermarksDesc" = "プレーヤーからチャンネルのウォーターマークを非表示にします";
|
||||||
"ExitFullscreenDesc" = "動画再生が終了したときにフルスクリーンモードを終了します";
|
"VideoEndTime" = "Show playback end time";
|
||||||
"NoDoubleTap2Seek" = "ダブルタップでのシークを無効化";
|
"VideoEndTimeDesc" = "Adds video playback end time to the player bar.";
|
||||||
"NoDoubleTap2SeekDesc" = "ダブルタップでのシークジェスチャーを無効にします";
|
"24hrFormat" = "24-hour format";
|
||||||
|
"24hrFormatDesc" = "Shows end time in 24-hour format.";
|
||||||
"Tabbar" = "タブバー";
|
|
||||||
"RemoveLabels" = "ラベルを削除";
|
"Player.Interface" = "Interface";
|
||||||
"RemoveLabelsDesc" = "タブラベルを削除します";
|
"PortraitFullscreen" = "縦画面フルスクリーンモード";
|
||||||
"RemoveIndicators" = "インジケーターを削除";
|
"PortraitFullscreenDesc" = "縦画面フルスクリーンモードをサポートします";
|
||||||
"RemoveIndicatorsDesc" = "タブインジケーターを削除します";
|
"ClassicQuality" = "クラシックなビデオ品質";
|
||||||
"ReExplore" = "ショートタブを探索タブに置き換え";
|
"ClassicQualityDesc" = "クラシックなビデオ品質選択メニューを復元します";
|
||||||
"ReExploreDesc" = "古いYouTubeバージョンのように、ショートタブの代わりに探索タブを表示します";
|
"ExtraSpeedOptions" = "再生速度の追加オプション";
|
||||||
"AddExplore" = "Add Explore tab";
|
"ExtraSpeedOptionsDesc" = "プレーヤーメニューに追加の再生速度オプションを追加します";
|
||||||
"AddExploreDesc" = "Adds Explore tab to the Tab bar.";
|
"RedProgressBar" = "赤いプログレスバー";
|
||||||
"HideShortsTab" = "ショートタブを非表示";
|
"RedProgressBarDesc" = "赤いプログレスバーを復元します";
|
||||||
"HideShortsTabDesc" = "タブバーからショートタブを非表示にします";
|
"NoPlayerRemixButton" = "Remove remix button";
|
||||||
"HideSubscriptionsTab" = "登録チャンネルタブを非表示";
|
"NoPlayerRemixButtonDesc" = "Removes remix button under the player.";
|
||||||
"HideSubscriptionsTabDesc" = "タブバーから登録チャンネルタブを非表示にします";
|
"NoPlayerClipButton" = "Remove clip button";
|
||||||
"HideUploadButton" = "アップロードボタンを非表示";
|
"NoPlayerClipButtonDesc" = "Removes clip button under the player.";
|
||||||
"HideUploadButtonDesc" = "タブバーからアップロードボタンを非表示にします";
|
"NoPlayerDownloadButton" = "Remove download button";
|
||||||
"HideLibraryTab" = "ライブラリタブを非表示";
|
"NoPlayerDownloadButtonDesc" = "Removes download button under the player.";
|
||||||
"HideLibraryTabDesc" = "タブバーからライブラリタブを非表示にします";
|
|
||||||
|
"Player.Actions" = "Actions";
|
||||||
"Shorts" = "ショート";
|
"BackgroundPlayback" = "バックグラウンド再生";
|
||||||
"ShortsOnlyMode" = "Shorts Only Mode";
|
"BackgroundPlaybackDesc" = "バックグラウンドでの再生を有効にします";
|
||||||
"ShortsOnlyModeDesc" = "Limits YouTube functionality to viewing Shorts only.";
|
"Miniplayer" = "ミニプレーヤーを有効化";
|
||||||
"HideShorts" = "ショート動画を非表示";
|
"MiniplayerDesc" = "ミニプレーヤーに対応していない動画(子供向けの動画など)でもミニプレーヤーを有効にします";
|
||||||
"HideShortsDesc" = "ホーム, おすすめなどからショート動画を非表示にします(視聴履歴には適用されません)";
|
"DisableAutoplay" = "自動再生を無効化";
|
||||||
"ShortsProgress" = "プログレスバーを有効化";
|
"DisableAutoplayDesc" = "アプリを開いた後に動画の自動再生を防止します";
|
||||||
"ShortsProgressDesc" = "ショートオーバーレイにプログレスバーを表示します";
|
"DisableAutoCaptions" = "Disable auto captions";
|
||||||
"PinchToFullscreenShorts" = "Pinch to Fullscreen";
|
"DisableAutoCaptionsDesc" = "Prevents automatic activation of captions.";
|
||||||
"PinchToFullscreenShortsDesc" = "Manages visibility of the overlay with pinch in and pinch out gestures, displaying Shorts in fullscreen mode.";
|
"NoContentWarning" = "コンテンツ警告をスキップ";
|
||||||
"ShortsToRegular" = "Shorts to regular videos";
|
"NoContentWarningDesc" = "不適切なコンテンツの警告メッセージをスキップします";
|
||||||
"ShortsToRegularDesc" = "Opens Shorts videos as regular videos.";
|
"NoHints" = "ヒントを無効化";
|
||||||
"ResumeShorts" = "ショートタブからの再開を防止";
|
"NoHintsDesc" = "再生中に右上に表示される投稿者のヒントを無効にします";
|
||||||
"ResumeShortsDesc" = "ショートを視聴中にアプリを閉じた場合でも、ショートからの再開を防止します";
|
"AutoFullscreen" = "動画をフルスクリーンで再生";
|
||||||
"HideShortsLogo" = "ショートロゴを非表示";
|
"AutoFullscreenDesc" = "動画を自動的にフルスクリーンモードで再生します";
|
||||||
"HideShortsLogoDesc" = "左上隅のショートロゴを非表示にします";
|
"ExitFullscreen" = "再生終了時にフルスクリーンモードを終了";
|
||||||
"HideShortsSearch" = "検索ボタンを非表示";
|
"ExitFullscreenDesc" = "動画再生が終了したときにフルスクリーンモードを終了します";
|
||||||
"HideShortsSearchDesc" = "ショートオーバーレイから検索ボタンを非表示にします";
|
|
||||||
"HideShortsCamera" = "カメラボタンを非表示";
|
"Player.Gestures" = "Gestures";
|
||||||
"HideShortsCameraDesc" = "ショートオーバーレイからカメラボタンを非表示にします";
|
"AdjustWithFinger" = "Adjust speed by gestures";
|
||||||
"HideShortsMore" = "その他(⋮)ボタンを非表示";
|
"AdjustWithFingerDesc" = "Allows adjusting playback speed by long press on player and moving finger up and down";
|
||||||
"HideShortsMoreDesc" = "ショートオーバーレイからその他(⋮)ボタンを非表示にします。画面の長押しでアクセスも可能です";
|
"PreserveSpeed" = "Preserve Speed";
|
||||||
"HideShortsSubscriptions" = "チャンネル登録ボタンを非表示";
|
"PreserveSpeedDesc" = "Preserves adjusted speed after gesture completion";
|
||||||
"HideShortsSubscriptionsDesc" = "ショートが一時停止されたときに表示されるチャンネル登録ボタンを非表示にします";
|
"TwoFingerTapToPause" = "Pause using two fingers";
|
||||||
"HideShortsLike" = "いいねボタンを非表示";
|
"TwoFingerTapToPauseDesc" = "Pause/Resume playback by tapping on the screen using two fingers.";
|
||||||
"HideShortsLikeDesc" = "ショートオーバーレイからいいねボタンを非表示にします";
|
"TwoFingerPanToBrightness" = "Adjust brightness";
|
||||||
"HideShortsDislike" = "低評価ボタンを非表示";
|
"TwoFingerPanToBrightnessDesc" = "Allows adjusting screen brigthness by sliding up/down using two fingers.";
|
||||||
"HideShortsDislikeDesc" = "ショートオーバーレイから低評価ボタンを非表示にします";
|
"CopyWithTimestamp" = "タイムスタンプ付きリンクをコピー";
|
||||||
"HideShortsComments" = "コメントボタンを非表示";
|
"CopyWithTimestampDesc" = "一時停止ボタンを押すことで、タイムスタンプ付きリンクをクリップボードにコピーできます";
|
||||||
"HideShortsCommentsDesc" = "ショートオーバーレイからコメントボタンを非表示にします";
|
"PauseOnOverlay" = "Pause on overlay";
|
||||||
"HideShortsRemix" = "リミックスボタンを非表示";
|
"PauseOnOverlayDesc" = "Sets playback on pause if overlay appears.";
|
||||||
"HideShortsRemixDesc" = "ショートオーバーレイからリミックスボタンを非表示にします";
|
"DontSnap2Chapter" = "チャプターへのスナップを無効化";
|
||||||
"HideShortsShare" = "共有ボタンを非表示";
|
"DontSnap2ChapterDesc" = "ダブルタップジェスチャーで次のエピソードへスキップするのを無効にします";
|
||||||
"HideShortsShareDesc" = "ショートオーバーレイから共有ボタンを非表示にします";
|
"NoTwoFingerSnapToChapter" = "Disable two finger double tap";
|
||||||
"HideShortsAvatars" = "チャンネルのアバターを非表示";
|
"NoTwoFingerSnapToChapterDesc" = "Disables two finger double tap snap to chapter gesture.";
|
||||||
"HideShortsAvatarsDesc" = "右下隅のプロフィール画像を非表示にします";
|
"NoFreeZoom" = "フリーズームジェスチャーを無効化";
|
||||||
"HideShortsThanks" = "スーパーサンクスボタンを非表示";
|
"NoFreeZoomDesc" = "新しいフリーズームジェスチャーを無効にします";
|
||||||
"HideShortsThanksDesc" = "ショートオーバーレイからスーパーサンクス(寄付)ボタンを非表示にします";
|
"NoDoubleTap2Seek" = "ダブルタップでのシークを無効化";
|
||||||
"HideShortsSource" = "Hide Shorts Source";
|
"NoDoubleTap2SeekDesc" = "ダブルタップでのシークジェスチャーを無効にします";
|
||||||
"HideShortsSourceDesc" = "Hides the Shorts sources under the channel name.";
|
|
||||||
"HideShortsChannelName" = "チャンネル名を非表示";
|
"Shorts" = "ショート";
|
||||||
"HideShortsChannelNameDesc" = "ショートオーバーレイからチャンネル名とチャンネル登録ボタンを非表示にします";
|
"ShortsOnlyMode" = "Shorts Only Mode";
|
||||||
"HideShortsDescription" = "説明を非表示";
|
"ShortsOnlyModeDesc" = "Limits YouTube functionality to viewing Shorts only.";
|
||||||
"HideShortsDescriptionDesc" = "チャンネル名の下に表示されるショートの説明を非表示にします";
|
"AutoSkipShorts" = "Auto-skip Shorts";
|
||||||
"HideShortsAudioTrack" = "オーディオトラックを非表示";
|
"AutoSkipShortsDesc" = "Moves to the next video when the current video playback finishes.";
|
||||||
"HideShortsAudioTrackDesc" = "ショートの説明の下に表示されるオーディオトラックを非表示にします";
|
"ShortsProgress" = "プログレスバーを有効化";
|
||||||
|
"ShortsProgressDesc" = "ショートオーバーレイにプログレスバーを表示します";
|
||||||
"Other" = "その他";
|
"SpeedByLongTap" = "Increase Shorts playback rate";
|
||||||
"CopyVideoInfo" = "Copy video information";
|
"SpeedByLongTapDesc" = "Allows to speed up playback by long pressing on a certain part of the screen.";
|
||||||
"CopyVideoInfoDesc" = "Adds button to copy video title and description into Video Description panel.";
|
"SpeedLocation" = "Activation location";
|
||||||
"PostManager" = "Save post information";
|
"LeftSide" = "Left side";
|
||||||
"PostManagerDesc" = "Allows to copy post text and save post as image by long tap.";
|
"RightSide" = "Right side";
|
||||||
"SavePostImage" = "Save community posts image";
|
"PinchToFullscreenShorts" = "Pinch to Fullscreen";
|
||||||
"SavePostImageDesc" = "Saves community posts image to the Photos app by long tap.";
|
"PinchToFullscreenShortsDesc" = "Manages visibility of the overlay with pinch in and pinch out gestures, displaying Shorts in fullscreen mode.";
|
||||||
"SaveProfilePhoto" = "Save profile picture";
|
"ShortsToRegular" = "Shorts to regular videos";
|
||||||
"SaveProfilePhotoDesc" = "Saves profile picture to the Photos app by long tap.";
|
"ShortsToRegularDesc" = "Opens Shorts videos as regular videos.";
|
||||||
"CommentManager" = "Save comment information";
|
"HideShortsLogo" = "ショートロゴを非表示";
|
||||||
"CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
|
"HideShortsLogoDesc" = "左上隅のショートロゴを非表示にします";
|
||||||
"FixAlbums" = "Fix covers";
|
"HideShortsSearch" = "検索ボタンを非表示";
|
||||||
"FixAlbumsDesc" = "Fixes the display of covers for users from Russia.";
|
"HideShortsSearchDesc" = "ショートオーバーレイから検索ボタンを非表示にします";
|
||||||
"RemovePlayNext" = "\"次に再生\"を削除";
|
"HideShortsCamera" = "カメラボタンを非表示";
|
||||||
"RemovePlayNextDesc" = "メニューから\"次に再生\"オプションを削除します";
|
"HideShortsCameraDesc" = "ショートオーバーレイからカメラボタンを非表示にします";
|
||||||
"NoContinueWatching" = "\"続きを見る\"を削除";
|
"HideShortsMore" = "その他(⋮)ボタンを非表示";
|
||||||
"NoContinueWatchingDesc" = "ホームページに未完成の動画を含む\"続きを見る\"セクションを削除します";
|
"HideShortsMoreDesc" = "ショートオーバーレイからその他(⋮)ボタンを非表示にします。画面の長押しでアクセスも可能です";
|
||||||
"NoSearchHistory" = "検索履歴を非表示";
|
"HideShortsSubscriptions" = "チャンネル登録ボタンを非表示";
|
||||||
"NoSearchHistoryDesc" = "検索履歴とサジェストを視覚的に非表示にします。注意:検索履歴は他のYouTubeクライアントからアクセス可能です";
|
"HideShortsSubscriptionsDesc" = "ショートが一時停止されたときに表示されるチャンネル登録ボタンを非表示にします";
|
||||||
"NoRelatedWatchNexts" = "プレーヤー下のすべての動画を非表示";
|
|
||||||
"NoRelatedWatchNextsDesc" = "プレーヤー下に表示されるすべての動画を非表示にし、動画情報とコメントセクションのみにします";
|
"Tabbar" = "タブバー";
|
||||||
"StickSortComments" = "コメントヘッダーを固定";
|
"RemoveLabels" = "ラベルを削除";
|
||||||
"StickSortCommentsDesc" = "コメントのソートヘッダー(トップ,最新)をスクロールしても消えないように固定します";
|
"RemoveLabelsDesc" = "タブラベルを削除します";
|
||||||
"HideSortComments" = "コメントヘッダーを非表示";
|
"RemoveIndicators" = "インジケーターを削除";
|
||||||
"HideSortCommentsDesc" = "コメントのソートヘッダー(トップ,最新)を表示しないようにします";
|
"RemoveIndicatorsDesc" = "タブインジケーターを削除します";
|
||||||
"PlaylistOldMinibar" = "古いプレイリストミニバー";
|
"ReExplore" = "ショートタブを探索タブに置き換え";
|
||||||
"PlaylistOldMinibarDesc" = "新しいフローティングプレイリストパネルを古いものに置き換えます";
|
"ReExploreDesc" = "古いYouTubeバージョンのように、ショートタブの代わりに探索タブを表示します";
|
||||||
"DisableRTL" = "RTLフォーマットを無効化";
|
"AddExplore" = "Add Explore tab";
|
||||||
"DisableRTLDesc" = "RTLで表示される言語を左から右(LTR)の形式で表示するように強制します";
|
"AddExploreDesc" = "Adds Explore tab to the Tab bar.";
|
||||||
|
"HideShortsTab" = "ショートタブを非表示";
|
||||||
"Startup" = "スタートアップページ";
|
"HideShortsTabDesc" = "タブバーからショートタブを非表示にします";
|
||||||
"Home" = "ホーム";
|
"HideSubscriptionsTab" = "登録チャンネルタブを非表示";
|
||||||
"Explore" = "探索";
|
"HideSubscriptionsTabDesc" = "タブバーから登録チャンネルタブを非表示にします";
|
||||||
"ShortsTab" = "ショート";
|
"HideUploadButton" = "アップロードボタンを非表示";
|
||||||
"Subscriptions" = "登録チャンネル";
|
"HideUploadButtonDesc" = "タブバーからアップロードボタンを非表示にします";
|
||||||
"Library" = "ライブラリ";
|
"HideLibraryTab" = "ライブラリタブを非表示";
|
||||||
"Warning" = "警告";
|
"HideLibraryTabDesc" = "タブバーからライブラリタブを非表示にします";
|
||||||
"TabIsHidden" = "非表示のタブはスタートアップページとして選択できません";
|
|
||||||
|
"Interface" = "Interface";
|
||||||
"DonateViaPayPal" = "Donate via PayPal";
|
"OledTheme" = "Oled theme";
|
||||||
"SupportViaGhSponsors" = "Support development via Github Sponsors";
|
"OledThemeDesc" = "Turns all dark colors to black";
|
||||||
"Version" = "バージョン";
|
"NativeShare" = "Native share sheet";
|
||||||
"About" = "About";
|
"NativeShareDesc" = "Uses system share sheet to share media";
|
||||||
"Credits" = "クレジット";
|
"RemoveInlineComment" = "Remove inline comment";
|
||||||
"Developer" = "YTLiteの開発者";
|
"RemoveInlineCommentDesc" = "Removes comment section under the player.";
|
||||||
"ChineseSimplified" = "中国語(簡体字)翻訳";
|
"RemovePlayNext" = "\"次に再生\"を削除";
|
||||||
"ChineseTraditional" = "中国語(繁体字)翻訳";
|
"RemovePlayNextDesc" = "メニューから\"次に再生\"オプションを削除します";
|
||||||
"French" = "フランス語翻訳";
|
"RemoveDownloadMenu" = "Remove \"Download\"";
|
||||||
"Spanish" = "スペイン語翻訳";
|
"RemoveDownloadMenuDesc" = "Removes \"Download\" option from menu.";
|
||||||
"Japanese" = "日本語翻訳";
|
"RemoveWatchLaterMenu" = "Remove \"Save to Watch Later\"";
|
||||||
"Vietnamese" = "Vietnamese localization";
|
"RemoveWatchLaterMenuDesc" = "Removes \"Save to Watch Later\" option from menu.";
|
||||||
"Advanced" = "アドバンスモード";
|
"RemoveSaveToPlaylistMenu" = "Remove \"Save to playlist\"";
|
||||||
"AdvancedModeReminder" = "YTLiteでアドバンスモードを有効にしますか?\n\nこのモードでは50以上の追加オプションを使用してYouTubeのカスタマイズと最適化が可能です。後で、設定 → %@ → %@ → %@から変更できます";
|
"RemoveSaveToPlaylistMenuDesc" = "Removes \"Save to playlist\" option from menu.";
|
||||||
"ClearCache" = "Clear cache";
|
"RemoveShareMenu" = "Remove \"Share\"";
|
||||||
"ResetSettings" = "YTLiteの設定をリセット";
|
"RemoveShareMenuDesc" = "Removes \"Share\" option from menu.";
|
||||||
"ResetMessage" = "このオプションを選択するとYTLiteの設定がデフォルトにリセットされ、アプリが終了します。\n\n続行してもよろしいですか?";
|
"RemoveNotInterestedMenu" = "Remove \"Not interested\"";
|
||||||
"ShortsOnlyWarning" = "Are you sure you want to activate this mode?\n\nIn this mode, you will only be able to watch Shorts videos and won't be able to do anything else.\n\nYou can disable Shorts Only Mode by long pressing with two fingers in the Shorts player.";
|
"RemoveNotInterestedMenuDesc" = "Removes \"Not interested\" option from menu.";
|
||||||
"ShortsModeTurnedOff" = "Shorts Only Mode has been turned off";
|
"RemoveDontRecommendMenu" = "Remove \"Don't recommend channel\"";
|
||||||
"Yes" = "はい";
|
"RemoveDontRecommendMenuDesc" = "Removes \"Don't recommend channel\" option from menu.";
|
||||||
"No" = "いいえ";
|
"RemoveReportMenu" = "Remove \"Report\"";
|
||||||
|
"RemoveReportMenuDesc" = "Removes \"Report\" option from menu.";
|
||||||
"SelectAction" = "Select action";
|
"NoContinueWatching" = "\"続きを見る\"を削除";
|
||||||
"CopyTitle" = "Copy title";
|
"NoContinueWatchingDesc" = "ホームページに未完成の動画を含む\"続きを見る\"セクションを削除します";
|
||||||
"CopyDescription" = "Copy description";
|
"NoSearchHistory" = "検索履歴を非表示";
|
||||||
"CopyPostText" = "Copy post text";
|
"NoSearchHistoryDesc" = "検索履歴とサジェストを視覚的に非表示にします。注意:検索履歴は他のYouTubeクライアントからアクセス可能です";
|
||||||
"SavePostAsImage" = "Save post as image";
|
"NoRelatedWatchNexts" = "プレーヤー下のすべての動画を非表示";
|
||||||
"CopyPostAsImage" = "Copy post as image";
|
"NoRelatedWatchNextsDesc" = "プレーヤー下に表示されるすべての動画を非表示にし、動画情報とコメントセクションのみにします";
|
||||||
"CopyCommentText" = "Copy comment text";
|
"StickSortComments" = "コメントヘッダーを固定";
|
||||||
"SaveCommentAsImage" = "Save comment as image";
|
"StickSortCommentsDesc" = "コメントのソートヘッダー(トップ,最新)をスクロールしても消えないように固定します";
|
||||||
"CopyCommentAsImage" = "Copy comment as image";
|
"HideSortComments" = "コメントヘッダーを非表示";
|
||||||
"Cancel" = "Cancel";
|
"HideSortCommentsDesc" = "コメントのソートヘッダー(トップ,最新)を表示しないようにします";
|
||||||
"Copied" = "Copied to clipboard";
|
"PlaylistOldMinibar" = "古いプレイリストミニバー";
|
||||||
"Saved" = "Saved to Photos";
|
"PlaylistOldMinibarDesc" = "新しいフローティングプレイリストパネルを古いものに置き換えます";
|
||||||
"Done" = "Done";
|
"StartupAnimation" = "Startup animation";
|
||||||
"Error" = "Error";
|
"StartupAnimationDesc" = "Displays YouTube startup loading animation";
|
||||||
|
"OldYTUI" = "Old UI";
|
||||||
|
"OldYTUIDesc" = "Spoofs YouTube version so that it will return old interface";
|
||||||
|
"DisableRTL" = "RTLフォーマットを無効化";
|
||||||
|
"DisableRTLDesc" = "RTLで表示される言語を左から右(LTR)の形式で表示するように強制します";
|
||||||
|
|
||||||
|
"HoldToSpeed" = "Hold to speed";
|
||||||
|
"DefaultPlaybackRate" = "Default playback rate";
|
||||||
|
"PlaybackQualityOnWiFi" = "Playback quality on WiFi";
|
||||||
|
"PlaybackQualityOnCellular" = "Playback quality on Cellular";
|
||||||
|
|
||||||
|
"Startup" = "スタートアップページ";
|
||||||
|
"Home" = "ホーム";
|
||||||
|
"Explore" = "探索";
|
||||||
|
"ShortsTab" = "ショート";
|
||||||
|
"Subscriptions" = "登録チャンネル";
|
||||||
|
"Library" = "ライブラリ";
|
||||||
|
"Warning" = "警告";
|
||||||
|
"TabIsHidden" = "非表示のタブはスタートアップページとして選択できません";
|
||||||
|
|
||||||
|
"SupportDevelopment" = "Support development";
|
||||||
|
"SupportDevelopmentDesc" = "If you like YTLite and would like to support its development, you can do it using any of convenient ways below.\nThanks❤";
|
||||||
|
"Contributors" = "Contributors";
|
||||||
|
"OpenSourceLibs" = "Open Source Libraries";
|
||||||
|
"Preferences" = "%@ preferences";
|
||||||
|
"Version" = "バージョン";
|
||||||
|
"About" = "About";
|
||||||
|
"Credits" = "クレジット";
|
||||||
|
"Developer" = "YTLiteの開発者";
|
||||||
|
"SpecialThanks" = "Special thanks";
|
||||||
|
"SpecialThanks.Test" = "Invaluable contribution to tweak testing";
|
||||||
|
"ChineseSimplified" = "中国語(簡体字)翻訳";
|
||||||
|
"ChineseTraditional" = "中国語(繁体字)翻訳";
|
||||||
|
"French" = "フランス語翻訳";
|
||||||
|
"Spanish" = "スペイン語翻訳";
|
||||||
|
"Japanese" = "日本語翻訳";
|
||||||
|
"Vietnamese" = "Vietnamese localization";
|
||||||
|
"Advanced" = "アドバンスモード";
|
||||||
|
"AdvancedDesc" = "More customizable mode";
|
||||||
|
"AdvancedModeEnabled" = "Advanced mode has been enabled";
|
||||||
|
"AdvancedModeDisabled" = "Advanced mode has been disabled";
|
||||||
|
"AdvancedModeReminder" = "YTLiteでアドバンスモードを有効にしますか?\n\nこのモードでは50以上の追加オプションを使用してYouTubeのカスタマイズと最適化が可能です。後で、設定 → %@ → %@ → %@から変更できます";
|
||||||
|
"ClearCache" = "Clear cache";
|
||||||
|
"ClearCacheMessage" = "You're about to clear %@ of cache.\n\nDo you want to continue?";
|
||||||
|
"ImportPreferences" = "Import preferences";
|
||||||
|
"PreImportMessage" = "This action will replace the current preferences with those from the selected file.\n\nAre you sure you want to continue?";
|
||||||
|
"ExportPreferences" = "Export preferences";
|
||||||
|
"ResetSettings" = "YTLiteの設定をリセット";
|
||||||
|
"ResetMessage" = "このオプションを選択するとYTLiteの設定がデフォルトにリセットされ、アプリが終了します。\n\n続行してもよろしいですか?";
|
||||||
|
"ShortsOnlyWarning" = "Are you sure you want to activate this mode?\n\nIn this mode, you will only be able to watch Shorts videos and won't be able to do anything else.\n\nYou can disable Shorts Only Mode by long pressing with two fingers in the Shorts player.";
|
||||||
|
"ShortsModeTurnedOff" = "Shorts Only Mode has been turned off";
|
||||||
|
"LibraryAdded" = "The You/Library tab has been restored";
|
||||||
|
"LibraryRemoved" = "The You/Library tab has been removed";
|
||||||
|
"Yes" = "はい";
|
||||||
|
"No" = "いいえ";
|
||||||
|
|
||||||
|
"Select" = "Select";
|
||||||
|
"Default" = "Default";
|
||||||
|
"Best" = "Best";
|
||||||
|
"Disable" = "Disable";
|
||||||
|
"Show" = "Show";
|
||||||
|
"Disabled" = "Disabled";
|
||||||
|
"PlaybackSpeed" = "Playback Speed";
|
||||||
|
"SpeedPreserved" = "Speed preserved";
|
||||||
|
"ResetSpeed" = "Reset";
|
||||||
|
|
||||||
|
"Brightness" = "Brightness";
|
||||||
|
"Toast.PlaybackSpeed" = "Playback Speed";
|
||||||
|
|
||||||
|
"SelectAction" = "Select action";
|
||||||
|
"DownloadVideo" = "Download video";
|
||||||
|
"DownloadAudio" = "Download audio";
|
||||||
|
"SaveImage" = "Save image";
|
||||||
|
"CopyInformation" = "Copy information";
|
||||||
|
"CopyChannelName" = "Copy channel name";
|
||||||
|
"CopyTitle" = "Copy title";
|
||||||
|
"CopyDescription" = "Copy description";
|
||||||
|
"CopyTimestampedLink" = "Copy link with timestamp";
|
||||||
|
"PlayInExternalPlayer" = "Play in external player";
|
||||||
|
"PlayInSystemPlayer" = "Play in system player";
|
||||||
|
"PlayInInfuse" = "Play in Infuse";
|
||||||
|
"PlayInVLC" = "Play in VLC";
|
||||||
|
"PlayerNotFound" = "Player not found";
|
||||||
|
"OpenAsRegularVideo" = "Open as regular video";
|
||||||
|
"CopyPostText" = "Copy post text";
|
||||||
|
"SaveCurrentImage" = "Save current image";
|
||||||
|
"CopyCurrentImage" = "Copy current image";
|
||||||
|
"SavePostAsImage" = "Save post as image";
|
||||||
|
"CopyPostAsImage" = "Copy post as image";
|
||||||
|
"CopyCommentText" = "Copy comment text";
|
||||||
|
"SaveCommentAsImage" = "Save comment as image";
|
||||||
|
"CopyCommentAsImage" = "Copy comment as image";
|
||||||
|
"SaveProfilePicture" = "Save profile picture";
|
||||||
|
"CopyProfilePicture" = "Copy profile picture";
|
||||||
|
"DownloadThumbnail" = "Save thumbnail";
|
||||||
|
"CopyThumbnail" = "Copy thumbnail";
|
||||||
|
"Cancel" = "Cancel";
|
||||||
|
"Cancelled" = "Cancelled";
|
||||||
|
"Copied" = "Copied to clipboard";
|
||||||
|
"Saved" = "Saved to Photos";
|
||||||
|
"Done" = "Done";
|
||||||
|
"Error" = "Error";
|
||||||
|
"Error.Clipboard" = "Error. Check clipboard for more info";
|
||||||
|
"Error.PathIssue" = "Error. Problem with generating final path. Issue with media title?";
|
||||||
|
"Error.NoSpace" = "Insufficient space on the device.\n\nAt least %@ additional free space is required. Available free space: %@";
|
||||||
|
"Error.Multidownloading" = "Multi-downloading not available yet.";
|
||||||
|
"Error.FailedToImport" = "Failed to import preferences";
|
||||||
|
"DownloadingVideo" = "Downloading video";
|
||||||
|
"DownloadingAudio" = "Downloading audio";
|
||||||
|
"Converting" = "Converting";
|
||||||
|
"RetryLogin" = "Workaround activated.\n\nPlease try again.";
|
||||||
|
"LoginInfo" = "App restart required after successful signing into Google account";
|
||||||
|
|
||||||
|
"Welcome.Download" = "Download Media";
|
||||||
|
"Welcome.DownloadDesc" = "Download your favorite content, whether it's Videos, Shorts, Audio, or Profile photos. Copy interesting posts and comments or save them as images";
|
||||||
|
"Welcome.Content" = "Adjust Interface";
|
||||||
|
"Welcome.ContentDesc" = "Remove unwanted content and interface elements. Enable true OLED dark mode";
|
||||||
|
"Welcome.Player" = "Setup Player Behavior";
|
||||||
|
"Welcome.PlayerDesc" = "Сustomize the player's behavior, auto-select quality and playback speed. Control using gestures";
|
||||||
|
"Welcome.More" = "And even more...";
|
||||||
|
"Welcome.MoreDesc" = "YouTube Plus includes over 50 different options, including features like saving preferences and clearing cache. Settings are available in the YouTube Plus section under YouTube settings";
|
||||||
|
"SupportMe" = "Support me";
|
||||||
|
"Continue" = "Continue";
|
||||||
|
|
||||||
|
"DonationReminder" = "Your support makes YTPlus better... Support through tweak settings";
|
||||||
|
"DontRemind" = "Turn off";
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
@@ -1,8 +1,14 @@
|
|||||||
"General" = "Основные";
|
"Downloading" = "Загрузка";
|
||||||
"RemoveAds" = "Убрать рекламу";
|
"DownloadManager" = "Менеджер загрузок";
|
||||||
"RemoveAdsDesc" = "Убирает рекламу в приложении.";
|
"DownloadManagerDesc" = "Расширяет возможности кнопки «Скачать» под плеером, позволяя скачивать Видео, Аудио, Обложки и Копировать информацию о видео.\n\nДля возможности загружать видео в качестве 2K+ необходимо активировать твик YTUHD.";
|
||||||
"BackgroundPlayback" = "Фоновое воспроизведение";
|
"DownloadManagerYtl" = "Выделить кнопку для загрузок";
|
||||||
"BackgroundPlaybackDesc" = "Активирует фоновое воспроизведение.";
|
"DownloadManagerYtlDesc" = "Добавляет кнопку «YouTube Plus» под плеером для менеджера загрузок";
|
||||||
|
"PostManager" = "Сохранять информацию с постов";
|
||||||
|
"PostManagerDesc" = "Позволяет скопировать текст из поста или сохранить пост как фото долгим нажатием по нему.";
|
||||||
|
"SaveProfilePhoto" = "Сохранять фото профиля";
|
||||||
|
"SaveProfilePhotoDesc" = "Сохраняет фото профиля в «Фото» долгим нажатием по нему.";
|
||||||
|
"CommentManager" = "Сохранять информацию с комментариев";
|
||||||
|
"CommentManagerDesc" = "Позволяет скопировать текст из комментария или сохранить комментарий как фото долгим нажатием по нему.";
|
||||||
|
|
||||||
"Navbar" = "Панель навигации";
|
"Navbar" = "Панель навигации";
|
||||||
"RemoveCast" = "Скрыть «Трансляция»";
|
"RemoveCast" = "Скрыть «Трансляция»";
|
||||||
@@ -13,20 +19,39 @@
|
|||||||
"RemoveSearchDesc" = "Скрывает кнопку поиска с панели навигации.";
|
"RemoveSearchDesc" = "Скрывает кнопку поиска с панели навигации.";
|
||||||
"RemoveVoiceSearch" = "Скрыть «Голосовой поиск»";
|
"RemoveVoiceSearch" = "Скрыть «Голосовой поиск»";
|
||||||
"RemoveVoiceSearchDesc" = "Скрывает кнопку голосового поиска с панели навигации.";
|
"RemoveVoiceSearchDesc" = "Скрывает кнопку голосового поиска с панели навигации.";
|
||||||
|
"RemoveSponsorBlock" = "Скрыть «SponsorBlock»";
|
||||||
|
"RemoveSponsorBlockDesc" = "Скрывает кнопку «SponsorBlock» с панели навигации.";
|
||||||
"StickyNavbar" = "Закрепить панель навигации";
|
"StickyNavbar" = "Закрепить панель навигации";
|
||||||
"StickyNavbarDesc" = "Закрепляет панель навигации в верхней части экрана, запрещая ему скрываться во время скролла страницы вниз.";
|
"StickyNavbarDesc" = "Фиксирует панель навигации в верхней части экрана.";
|
||||||
"NoSubbar" = "Скрыть наклейки";
|
"NoSubbar" = "Скрыть наклейки";
|
||||||
"NoSubbarDesc" = "Скрывает панель с наклейками (Все, Новое для вас, Сейчас в эфире и т.д.) под панелью навигации.";
|
"NoSubbarDesc" = "Скрывает панель с наклейками (Все, Новое для вас, Сейчас в эфире и т.д.) под панелью навигации.";
|
||||||
"NoYTLogo" = "Скрыть логотип YouTube";
|
"NoYTLogo" = "Скрыть логотип YouTube";
|
||||||
"NoYTLogoDesc" = "Убирает логотип YouTube с панели навигации.";
|
"NoYTLogoDesc" = "Убирает логотип YouTube с панели навигации.";
|
||||||
|
"PremiumYTLogo" = "Отображать Premium логотип";
|
||||||
|
"PremiumYTLogoDesc" = "Отображает логотип Premium в панели навигации.";
|
||||||
|
|
||||||
"Overlay" = "Настройки оверлея";
|
"Feed" = "Настройки ленты";
|
||||||
|
"RemoveAds" = "Убрать рекламу";
|
||||||
|
"RemoveAdsDesc" = "Убирает рекламу в приложении.";
|
||||||
|
"HideShorts" = "Скрыть видеоролики Shorts";
|
||||||
|
"HideShortsDesc" = "Скрывает видеоролики, помеченные как Shorts с Главного экрана, Рекомендаций и т.д. (Не применяется к истории просмотров)";
|
||||||
|
"KeepSubsShorts" = "Shorts во вкладке «Подписки»";
|
||||||
|
"KeepSubsShortsDesc" = "Запрещает удаление роликов Shorts из вкладки «Подписки».";
|
||||||
|
"RemoveCommunityPosts" = "Убрать посты сообщества";
|
||||||
|
"RemoveCommunityPostsDesc" = "Убирает посты сообщества с ленты.";
|
||||||
|
"RemoveMoreTopics" = "Убрать «Еще темы»";
|
||||||
|
"RemoveMoreTopicsDesc" = "Убирает раздел «Еще темы» с ленты.";
|
||||||
|
"FixAlbums" = "Исправить отображение обложек";
|
||||||
|
"FixAlbumsDesc" = "Исправляет отображение обложек в том случае, если вы из России.";
|
||||||
|
|
||||||
|
"Player" = "Настройки плеера";
|
||||||
|
"Player.Overlay" = "Оверлей";
|
||||||
|
"SpeedControls" = "Управление скоростью";
|
||||||
|
"SpeedControlsDesc" = "Отображает кнопки управления скоростью воспроизведения в оверлее.";
|
||||||
"HideAutoplay" = "Скрыть «Автовоспроизведение»";
|
"HideAutoplay" = "Скрыть «Автовоспроизведение»";
|
||||||
"HideAutoplayDesc" = "Скрывает тумблер «Автовоспроизведение» с оверлея плеера.";
|
"HideAutoplayDesc" = "Скрывает тумблер «Автовоспроизведение» с оверлея плеера.";
|
||||||
"HideSubs" = "Скрыть «Субтитры»";
|
"HideSubs" = "Скрыть «Субтитры»";
|
||||||
"HideSubsDesc" = "Скрывает кнопку субтитров с оверлея плеера.";
|
"HideSubsDesc" = "Скрывает кнопку субтитров с оверлея плеера.";
|
||||||
"NoHUDMsgs" = "Скрыть сообщения плеера";
|
|
||||||
"NoHUDMsgsDesc" = "Скрывает надписи YouTube, появляющиеся поверх видео.";
|
|
||||||
"HidePrevNext" = "Скрыть «След.» и «Пред.»";
|
"HidePrevNext" = "Скрыть «След.» и «Пред.»";
|
||||||
"HidePrevNextDesc" = "Убирает переключатели «Следующий» и «Предыдущий» с плеера";
|
"HidePrevNextDesc" = "Убирает переключатели «Следующий» и «Предыдущий» с плеера";
|
||||||
"ReplacePrevNext" = "Перемотка вместо «След.» и «Пред.»";
|
"ReplacePrevNext" = "Перемотка вместо «След.» и «Пред.»";
|
||||||
@@ -35,49 +60,108 @@
|
|||||||
"NoDarkBgDesc" = "Убирает затемнение экрана под кнопками управления плеером.";
|
"NoDarkBgDesc" = "Убирает затемнение экрана под кнопками управления плеером.";
|
||||||
"NoEndScreenCards" = "Скрыть рекомендации";
|
"NoEndScreenCards" = "Скрыть рекомендации";
|
||||||
"NoEndScreenCardsDesc" = "Скрывает эскизы, отображаемые по окончанию видеоролика.";
|
"NoEndScreenCardsDesc" = "Скрывает эскизы, отображаемые по окончанию видеоролика.";
|
||||||
|
"NoAutonavEndScreenCards" = "Скрыть окно австовоспроизведения";
|
||||||
|
"NoAutonavEndScreenCardsDesc" = "Скрывает окно в котором, по окончанию воспроизведения, отображается видео, которое можно воспроизвести следующим. Включение данной опции также приведет к отключению автоперехода к следующему видео.";
|
||||||
"NoFullscreenActions" = "Отключить панель действий";
|
"NoFullscreenActions" = "Отключить панель действий";
|
||||||
"NoFullscreenActionsDesc" = "Отключает панель действий, отображающуюся под прогресс-баром плеера.";
|
"NoFullscreenActionsDesc" = "Отключает панель действий, отображающуюся под прогресс-баром плеера.";
|
||||||
"PersistentProgressBar" = "Всегда отображать прогресс-бар";
|
"PersistentProgressBar" = "Всегда отображать прогресс-бар";
|
||||||
"PersistentProgressBarDesc" = "Всегда отображает прогресс-бар внутри плеера.";
|
"PersistentProgressBarDesc" = "Всегда отображает прогресс-бар внутри плеера.";
|
||||||
|
"StockVolumeHUD" = "Системный уровень громкости";
|
||||||
|
"StockVolumeHUDDesc" = "Отображает системную шкалу громкости в полноэкранном режиме.";
|
||||||
"NoRelatedVids" = "Скрыть рекомендации в оверлее";
|
"NoRelatedVids" = "Скрыть рекомендации в оверлее";
|
||||||
"NoRelatedVidsDesc" = "Скрывает рекомендации, отображаемые по свайпу вверх в плеере.";
|
"NoRelatedVidsDesc" = "Скрывает рекомендации, отображаемые по свайпу вверх в плеере.";
|
||||||
"NoPromotionCards" = "Скрыть сообщение «Есть реклама»";
|
"NoPromotionCards" = "Скрыть сообщение «Есть реклама»";
|
||||||
"NoPromotionCardsDesc" = "Скрывает всплывающее сообщение «Есть реклама» в роликах со спонсорской рекламой.";
|
"NoPromotionCardsDesc" = "Скрывает всплывающее сообщение «Есть реклама» в роликах со спонсорской рекламой.";
|
||||||
"NoWatermarks" = "Скрыть водяные знаки";
|
"NoWatermarks" = "Скрыть водяные знаки";
|
||||||
"NoWatermarksDesc" = "Скрывает значки каналов в плеере.";
|
"NoWatermarksDesc" = "Скрывает значки каналов в плеере.";
|
||||||
|
"VideoEndTime" = "Показывать время окончания";
|
||||||
|
"VideoEndTimeDesc" = "Отображает, в каком часу закончится ролик.";
|
||||||
|
"24hrFormat" = "24-часовой формат";
|
||||||
|
"24hrFormatDesc" = "Отображает время окончания в 24-часовом формате.";
|
||||||
|
|
||||||
"Player" = "Настройки плеера";
|
"Player.Interface" = "Интерфейс";
|
||||||
"Miniplayer" = "Разрешить миниплеер";
|
|
||||||
"MiniplayerDesc" = "Принудительно активирует миниплеер для видео, в которых изначально не был предназначен (например, видеоролики для детей).";
|
|
||||||
"PortraitFullscreen" = "Портретный полноэкранный режим";
|
"PortraitFullscreen" = "Портретный полноэкранный режим";
|
||||||
"PortraitFullscreenDesc" = "Активирует поддержку портретного полноэкранного режима.";
|
"PortraitFullscreenDesc" = "Активирует поддержку портретного полноэкранного режима.";
|
||||||
"CopyWithTimestamp" = "Ссылки с временными отметками";
|
"ClassicQuality" = "Классический выбор качества";
|
||||||
"CopyWithTimestampDesc" = "Позволяет скопировать ссылку на видео с временной отметкой в буфер обмена нажатием на кнопку паузы.";
|
"ClassicQualityDesc" = "Возвращает классическое меню выбора качества в меню плеера.";
|
||||||
|
"ExtraSpeedOptions" = "Больше скоростей воспроизведения";
|
||||||
|
"ExtraSpeedOptionsDesc" = "Добавляет больше опций скорости воспроизведения в выпадающее меню плеера.";
|
||||||
|
"RedProgressBar" = "Красный прогресс-бар";
|
||||||
|
"RedProgressBarDesc" = "Возвращает красный прогресс-бар вместо нового, серого цвета.";
|
||||||
|
"NoPlayerRemixButton" = "Убрать кнопку «Ремикс»";
|
||||||
|
"NoPlayerRemixButtonDesc" = "Убирает кнопку «Ремикс» под плеером.";
|
||||||
|
"NoPlayerClipButton" = "Убрать кнопку «Создать клип»";
|
||||||
|
"NoPlayerClipButtonDesc" = "Убирает кнопку «Создать клип» под плеером.";
|
||||||
|
"NoPlayerDownloadButton" = "Убрать кнопку «Скачать»";
|
||||||
|
"NoPlayerDownloadButtonDesc" = "Убирает кнопку «Скачать» под плеером.";
|
||||||
|
|
||||||
|
"Player.Actions" = "Поведение";
|
||||||
|
"BackgroundPlayback" = "Фоновое воспроизведение";
|
||||||
|
"BackgroundPlaybackDesc" = "Активирует фоновое воспроизведение.";
|
||||||
|
"Miniplayer" = "Разрешить миниплеер";
|
||||||
|
"MiniplayerDesc" = "Принудительно активирует миниплеер для видео, в которых изначально не был предназначен (например, видеоролики для детей).";
|
||||||
"DisableAutoplay" = "Запретить автовоспроизведение";
|
"DisableAutoplay" = "Запретить автовоспроизведение";
|
||||||
"DisableAutoplayDesc" = "Принудительно запрещает автовоспроизведение видео при его открытии.";
|
"DisableAutoplayDesc" = "Принудительно запрещает автовоспроизведение видео при его открытии.";
|
||||||
"DisableAutoCaptions" = "Запретить автоматические субтитры";
|
"DisableAutoCaptions" = "Запретить автоматические субтитры";
|
||||||
"DisableAutoCaptionsDesc" = "Отключает включенные по умолчанию субтитры";
|
"DisableAutoCaptionsDesc" = "Отключает включенные по умолчанию субтитры";
|
||||||
"NoContentWarning" = "Пропускать предупреждения";
|
"NoContentWarning" = "Пропускать предупреждения";
|
||||||
"NoContentWarningDesc" = "Пропускает предупреждения, всплывающие перед воспроизведением некоторого контента.";
|
"NoContentWarningDesc" = "Пропускает предупреждения, всплывающие перед воспроизведением некоторого контента.";
|
||||||
"ClassicQuality" = "Классический выбор качества";
|
|
||||||
"ClassicQualityDesc" = "Возвращает классическое меню выбора качества в меню плеера.";
|
|
||||||
"ExtraSpeedOptions" = "Больше скоростей воспроизведения";
|
|
||||||
"ExtraSpeedOptionsDesc" = "Добавляет больше опций скорости воспроизведения в выпадающее меню плеера.";
|
|
||||||
"DontSnap2Chapter" = "Не перематывать эпизоды";
|
|
||||||
"DontSnap2ChapterDesc" = "Отключает жест перемотки к следующему эпизоду двойным нажатием.";
|
|
||||||
"RedProgressBar" = "Красный прогресс-бар";
|
|
||||||
"RedProgressBarDesc" = "Возвращает красный прогресс-бар вместо нового, серого цвета.";
|
|
||||||
"NoHints" = "Отключить подсказки";
|
"NoHints" = "Отключить подсказки";
|
||||||
"NoHintsDesc" = "Скрывает подсказки от авторов видео, появляющиеся в правом верхнем углу.";
|
"NoHintsDesc" = "Скрывает подсказки от авторов видео, появляющиеся в правом верхнем углу.";
|
||||||
"NoFreeZoom" = "Отключить жесты для зума";
|
|
||||||
"NoFreeZoomDesc" = "Отключает жесты приближения для нового зума.";
|
|
||||||
"AutoFullscreen" = "Открывать в полноэкранном режиме";
|
"AutoFullscreen" = "Открывать в полноэкранном режиме";
|
||||||
"AutoFullscreenDesc" = "Автоматически воспроизводит ролики в полноэкранном режиме.";
|
"AutoFullscreenDesc" = "Автоматически воспроизводит ролики в полноэкранном режиме.";
|
||||||
"ExitFullscreen" = "Автовыход из полноэкранного режима";
|
"ExitFullscreen" = "Автовыход из полноэкранного режима";
|
||||||
"ExitFullscreenDesc" = "Выходит из полноэкранного режима по окончанию воспроизведения.";
|
"ExitFullscreenDesc" = "Выходит из полноэкранного режима по окончанию воспроизведения.";
|
||||||
|
|
||||||
|
"Player.Gestures" = "Жесты";
|
||||||
|
"AdjustWithFinger" = "Регулировать скорость жестами";
|
||||||
|
"AdjustWithFingerDesc" = "Позволяет регулировать скорость зажатием и вертикальным движением пальца по окну плеера";
|
||||||
|
"PreserveSpeed" = "Сохранить скорость воспроизведения";
|
||||||
|
"PreserveSpeedDesc" = "Не сбрасывает отрегулированную скорость воспроизведения после окончания жеста";
|
||||||
|
"TwoFingerTapToPause" = "Приостанавливать двумя пальцами";
|
||||||
|
"TwoFingerTapToPauseDesc" = "Позволяет ставить на паузу/продолжать воспроизведение контента касанием плеера двумя пальцами.";
|
||||||
|
"TwoFingerPanToBrightness" = "Регулировать яркость";
|
||||||
|
"TwoFingerPanToBrightnessDesc" = "Позволяет регулировать яркость экрана вертикальным скольжением двумя пальцами по плееру.";
|
||||||
|
"CopyWithTimestamp" = "Ссылки с временными отметками";
|
||||||
|
"CopyWithTimestampDesc" = "Позволяет скопировать ссылку на видео с временной отметкой в буфер обмена нажатием на кнопку паузы.";
|
||||||
|
"PauseOnOverlay" = "Ставить на паузу с оверлеем";
|
||||||
|
"PauseOnOverlayDesc" = "Приостанавливает воспроизведение при появлении кнопок управления плеером.";
|
||||||
|
"DontSnap2Chapter" = "Не перематывать эпизоды";
|
||||||
|
"DontSnap2ChapterDesc" = "Отключает жест перемотки к следующему эпизоду двойным нажатием.";
|
||||||
|
"NoTwoFingerSnapToChapter" = "Отключить касание двумя пальцами";
|
||||||
|
"NoTwoFingerSnapToChapterDesc" = "Отключает жест перемотки эпизодов двойным нажатием двумя пальцами.";
|
||||||
|
"NoFreeZoom" = "Отключить жесты для зума";
|
||||||
|
"NoFreeZoomDesc" = "Отключает жесты приближения для нового зума.";
|
||||||
"NoDoubleTap2Seek" = "Отключить перемотку двойным тапом";
|
"NoDoubleTap2Seek" = "Отключить перемотку двойным тапом";
|
||||||
"NoDoubleTap2SeekDesc" = "Отключает перемотку двойным тапом в плеере.";
|
"NoDoubleTap2SeekDesc" = "Отключает перемотку двойным тапом в плеере.";
|
||||||
|
|
||||||
|
"Shorts" = "Настройки Shorts";
|
||||||
|
"ShortsOnlyMode" = "Режим Shorts";
|
||||||
|
"ShortsOnlyModeDesc" = "Ограничивает функциональность YouTube до отображения видеороликов Shorts";
|
||||||
|
"AutoSkipShorts" = "Автопереход к следующему";
|
||||||
|
"AutoSkipShortsDesc" = "Переключается на следующий Shorts по окончанию воспроизведения.";
|
||||||
|
"ShortsProgress" = "Показывать прогресс-бар";
|
||||||
|
"ShortsProgressDesc" = "Отображает прогресс-бар в плеере Shorts.";
|
||||||
|
"SpeedByLongTap" = "Ускоренное воспроизведение";
|
||||||
|
"SpeedByLongTapDesc" = "Позволяет ускорить воспроизведение долгим нажатием по определенной части экрана.";
|
||||||
|
"SpeedLocation" = "Зона активации ускорения";
|
||||||
|
"LeftSide" = "Левая часть экрана";
|
||||||
|
"RightSide" = "Правая часть экрана";
|
||||||
|
"PinchToFullscreenShorts" = "Полноэкранный режим щипком";
|
||||||
|
"PinchToFullscreenShortsDesc" = "Скрывает панель вкладок, тем самым отображает Shorts на весь экран.";
|
||||||
|
"ShortsToRegular" = "Shorts как обычные видео";
|
||||||
|
"ShortsToRegularDesc" = "Воспроизводит видеоролики Shorts в обычном проигрывателе.";
|
||||||
|
"HideShortsLogo" = "Скрыть логотип Shorts";
|
||||||
|
"HideShortsLogoDesc" = "Скрывает логотип Shorts, расположенный в верхнем левом углу.";
|
||||||
|
"HideShortsSearch" = "Скрыть кнопку «Поиск»";
|
||||||
|
"HideShortsSearchDesc" = "Скрывает кнопку поиска с плеера Shorts.";
|
||||||
|
"HideShortsCamera" = "Скрыть кнопку «Камера»";
|
||||||
|
"HideShortsCameraDesc" = "Скрывает кнопку камеры с плеера Shorts.";
|
||||||
|
"HideShortsMore" = "Скрыть кнопку «⋮»";
|
||||||
|
"HideShortsMoreDesc" = "Скрывает кнопку «Еще» (⋮) с плеера Shorts. Данное меню также доступно долгим нажатием по экрану.";
|
||||||
|
"HideShortsSubscriptions" = "Скрыть «Подписки»";
|
||||||
|
"HideShortsSubscriptionsDesc" = "Скрывает кнопку «Подписки», появляющуюся при остановке воспроизведения.";
|
||||||
|
|
||||||
"Tabbar" = "Панель вкладок";
|
"Tabbar" = "Панель вкладок";
|
||||||
"RemoveLabels" = "Скрыть названия";
|
"RemoveLabels" = "Скрыть названия";
|
||||||
"RemoveLabelsDesc" = "Скрывает названия вкладок.";
|
"RemoveLabelsDesc" = "Скрывает названия вкладок.";
|
||||||
@@ -94,71 +178,31 @@
|
|||||||
"HideUploadButton" = "Скрыть «Создать» (+)";
|
"HideUploadButton" = "Скрыть «Создать» (+)";
|
||||||
"HideUploadButtonDesc" = "Скрывает кнопку «Создать» с панели вкладок.";
|
"HideUploadButtonDesc" = "Скрывает кнопку «Создать» с панели вкладок.";
|
||||||
"HideLibraryTab" = "Скрыть «Библиотеку»";
|
"HideLibraryTab" = "Скрыть «Библиотеку»";
|
||||||
"HideLibraryTabDesc" = "Скрывает вкладку «Библиотека» с панели вкладок.";
|
"HideLibraryTabDesc" = "Скрывает вкладку «Библиотека» с панели вкладок.\n\nДанную вкладку можно восстановить долгим нажатием по вкладке «Главная»";
|
||||||
|
|
||||||
"Shorts" = "Настройки Shorts";
|
"Interface" = "Интерфейс";
|
||||||
"ShortsOnlyMode" = "Режим Shorts";
|
"OledTheme" = "Oled режим";
|
||||||
"ShortsOnlyModeDesc" = "Ограничивает функциональность YouTube до отображения видеороликов Shorts";
|
"OledThemeDesc" = "Заменяет темные цвета черным";
|
||||||
"HideShorts" = "Скрыть видеоролики Shorts";
|
"NativeShare" = "Системное меню «Поделиться»";
|
||||||
"HideShortsDesc" = "Скрывает видеоролики, помеченные как Shorts с Главного экрана, Рекомендаций и т.д. (Не применяется к истории просмотров)";
|
"NativeShareDesc" = "Выводит системное меню «Поделиться» при отправке контента.";
|
||||||
"ShortsProgress" = "Показывать прогресс-бар";
|
"RemoveInlineComment" = "Убрать секцию с комментарием";
|
||||||
"ShortsProgressDesc" = "Отображает прогресс-бар в плеере Shorts.";
|
"RemoveInlineCommentDesc" = "Убирает секцию с комментарием под плеером.";
|
||||||
"PinchToFullscreenShorts" = "Полноэкранный режим щипком";
|
|
||||||
"PinchToFullscreenShortsDesc" = "Скрывает панель вкладок, тем самым отображает Shorts на весь экран.";
|
|
||||||
"ShortsToRegular" = "Shorts как обычные видео";
|
|
||||||
"ShortsToRegularDesc" = "Воспроизводит видеоролики Shorts в обычном проигрывателе.";
|
|
||||||
"ResumeShorts" = "Всегда запускать с Главной страницы";
|
|
||||||
"ResumeShortsDesc" = "Предотвращает запуск видеороликов Shorts при открытии YouTube. Это происходит, если закрыть YouTube при просмотре Shorts.";
|
|
||||||
"HideShortsLogo" = "Скрыть логотип Shorts";
|
|
||||||
"HideShortsLogoDesc" = "Скрывает логотип Shorts, расположенный в верхнем левом углу.";
|
|
||||||
"HideShortsSearch" = "Скрыть кнопку «Поиск»";
|
|
||||||
"HideShortsSearchDesc" = "Скрывает кнопку поиска с плеера Shorts.";
|
|
||||||
"HideShortsCamera" = "Скрыть кнопку «Камера»";
|
|
||||||
"HideShortsCameraDesc" = "Скрывает кнопку камеры с плеера Shorts.";
|
|
||||||
"HideShortsMore" = "Скрыть кнопку «⋮»";
|
|
||||||
"HideShortsMoreDesc" = "Скрывает кнопку «Еще» (⋮) с плеера Shorts. Данное меню также доступно долгим нажатием по экрану.";
|
|
||||||
"HideShortsSubscriptions" = "Скрыть «Подписки»";
|
|
||||||
"HideShortsSubscriptionsDesc" = "Скрывает кнопку «Подписки», появляющуюся при остановке воспроизведения.";
|
|
||||||
"HideShortsLike" = "Скрыть кнопку «Лайк»";
|
|
||||||
"HideShortsLikeDesc" = "Скрывает кнопку лайка с плеера Shorts.";
|
|
||||||
"HideShortsDislike" = "Скрыть кнопку «Дизлайк»";
|
|
||||||
"HideShortsDislikeDesc" = "Скрывает кнопку дизлайка с плеера Shorts.";
|
|
||||||
"HideShortsComments" = "Скрыть кнопку «Комментарии»";
|
|
||||||
"HideShortsCommentsDesc" = "Скрывает кнопку комментариев с плеера Shorts.";
|
|
||||||
"HideShortsRemix" = "Скрыть кнопку «Ремикс»";
|
|
||||||
"HideShortsRemixDesc" = "Скрывает кнопку для создания ремикса с плеера Shorts.";
|
|
||||||
"HideShortsShare" = "Скрыть кнопку «Поделиться»";
|
|
||||||
"HideShortsShareDesc" = "Скрывает кнопку поделиться с плеера Shorts.";
|
|
||||||
"HideShortsAvatars" = "Скрыть аватарку";
|
|
||||||
"HideShortsAvatarsDesc" = "Скрывает аватарку пользователя в правом нижнем углу.";
|
|
||||||
"HideShortsThanks" = "Скрыть «Суперспасибо»";
|
|
||||||
"HideShortsThanksDesc" = "Скрывает кнопку отправки доната (суперспасибо) с плеера Shorts.";
|
|
||||||
"HideShortsSource" = "Скрыть источник Shorts";
|
|
||||||
"HideShortsSourceDesc" = "Скрывает источники Shorts под названием канала.";
|
|
||||||
"HideShortsChannelName" = "Скрыть название канала";
|
|
||||||
"HideShortsChannelNameDesc" = "Скрывает название канала и кнопку «Подписаться» с плеера Shorts.";
|
|
||||||
"HideShortsDescription" = "Скрыть описание ролика";
|
|
||||||
"HideShortsDescriptionDesc" = "Скрывает описание ролика, отображающееся под названием канала.";
|
|
||||||
"HideShortsAudioTrack" = "Скрыть аудиодорожку";
|
|
||||||
"HideShortsAudioTrackDesc" = "Скрывает информацию об аудиодорожке в нижней части плеера.";
|
|
||||||
|
|
||||||
"Other" = "Другие настройки";
|
|
||||||
"CopyVideoInfo" = "Копировать информацию о видео";
|
|
||||||
"CopyVideoInfoDesc" = "Добавляет кнопку для копирования названия и описания видео в панель описания видео.";
|
|
||||||
"PostManager" = "Сохранять информацию с постов";
|
|
||||||
"PostManagerDesc" = "Позволяет скопировать текст из поста или сохранить пост как фото долгим нажатием по нему.";
|
|
||||||
"SavePostImage" = "Сохранять изображения постов";
|
|
||||||
"SavePostImageDesc" = "Сохраняет изображения постов в «Фото» долгим нажатием по ним.";
|
|
||||||
"SaveProfilePhoto" = "Сохранять фото профиля";
|
|
||||||
"SaveProfilePhotoDesc" = "Сохраняет фото профиля в «Фото» долгим нажатием по нему.";
|
|
||||||
"CopyCommentText" = "Копировать текст комментариев";
|
|
||||||
"CopyCommentTextDesc" = "Копирует текст комментариев в буфер обмена долгим нажатием.";
|
|
||||||
"CommentManager" = "Сохранять информацию с комментариев";
|
|
||||||
"CommentManagerDesc" = "Позволяет скопировать текст из комментария или сохранить комментарий как фото долгим нажатием по нему.";
|
|
||||||
"FixAlbums" = "Исправить отображение обложек";
|
|
||||||
"FixAlbumsDesc" = "Исправляет отображение обложек в том случае, если вы из России.";
|
|
||||||
"RemovePlayNext" = "Убрать «Добавить в начало очереди»";
|
"RemovePlayNext" = "Убрать «Добавить в начало очереди»";
|
||||||
"RemovePlayNextDesc" = "Убирает опцию «Добавить в начало очереди» из меню видео.";
|
"RemovePlayNextDesc" = "Убирает опцию «Добавить в начало очереди» из меню видео.";
|
||||||
|
"RemoveDownloadMenu" = "Убрать «Скачать»";
|
||||||
|
"RemoveDownloadMenuDesc" = "Убирает «Скачать» из меню видео.";
|
||||||
|
"RemoveWatchLaterMenu" = "Убрать «Смотреть позже»";
|
||||||
|
"RemoveWatchLaterMenuDesc" = "Убирает «Смотреть позже» из меню видео.";
|
||||||
|
"RemoveSaveToPlaylistMenu" = "Убрать «Добавить в плейлист»";
|
||||||
|
"RemoveSaveToPlaylistMenuDesc" = "Убирает «Добавить в плейлист» из меню видео.";
|
||||||
|
"RemoveShareMenu" = "Убрать «Поделиться»";
|
||||||
|
"RemoveShareMenuDesc" = "Убирает «Поделиться» из меню видео.";
|
||||||
|
"RemoveNotInterestedMenu" = "Убрать «Не интересует»";
|
||||||
|
"RemoveNotInterestedMenuDesc" = "Убирает «Не интересует» из меню видео.";
|
||||||
|
"RemoveDontRecommendMenu" = "Убрать «Не рекомендовать»";
|
||||||
|
"RemoveDontRecommendMenuDesc" = "Убирает «Не рекомендовать видео с этого канала» из меню видео.";
|
||||||
|
"RemoveReportMenu" = "Убрать «Пожаловаться»";
|
||||||
|
"RemoveReportMenuDesc" = "Убирает «Пожаловаться» из меню видео.";
|
||||||
"NoContinueWatching" = "Отключить «Продолжить просмотр»";
|
"NoContinueWatching" = "Отключить «Продолжить просмотр»";
|
||||||
"NoContinueWatchingDesc" = "Удаляет блок «Продолжить просмотр» содержащий недосмотренные видео с Главной страницы.";
|
"NoContinueWatchingDesc" = "Удаляет блок «Продолжить просмотр» содержащий недосмотренные видео с Главной страницы.";
|
||||||
"NoSearchHistory" = "Скрыть историю поиска";
|
"NoSearchHistory" = "Скрыть историю поиска";
|
||||||
@@ -171,9 +215,18 @@
|
|||||||
"HideSortCommentsDesc" = "Скрывает панель сортировки комментариев.";
|
"HideSortCommentsDesc" = "Скрывает панель сортировки комментариев.";
|
||||||
"PlaylistOldMinibar" = "Отображать старую панель плейлистов";
|
"PlaylistOldMinibar" = "Отображать старую панель плейлистов";
|
||||||
"PlaylistOldMinibarDesc" = "Заменяет новую, плавающую панель плейлистов, на старую.";
|
"PlaylistOldMinibarDesc" = "Заменяет новую, плавающую панель плейлистов, на старую.";
|
||||||
|
"StartupAnimation" = "Анимация загрузки";
|
||||||
|
"StartupAnimationDesc" = "Отображает анимацию загрузки при запуске YouTube";
|
||||||
|
"OldYTUI" = "Старый интерфейс";
|
||||||
|
"OldYTUIDesc" = "Имитирует старую версию YouTube, чтобы загружался старый интерфейс";
|
||||||
"DisableRTL" = "Запретить формат «справа налево»";
|
"DisableRTL" = "Запретить формат «справа налево»";
|
||||||
"DisableRTLDesc" = "Принудительно отображает текст в формате слева направо для языков, изначально отображающихся в формате справа налево.";
|
"DisableRTLDesc" = "Принудительно отображает текст в формате слева направо для языков, изначально отображающихся в формате справа налево.";
|
||||||
|
|
||||||
|
"HoldToSpeed" = "Ускорение долгим нажатием";
|
||||||
|
"DefaultPlaybackRate" = "Скорость воспроизведения по умолчанию";
|
||||||
|
"PlaybackQualityOnWiFi" = "Качество по WiFi";
|
||||||
|
"PlaybackQualityOnCellular" = "Качество по мобильной сети";
|
||||||
|
|
||||||
"Startup" = "Начальная страница";
|
"Startup" = "Начальная страница";
|
||||||
"Home" = "Главная";
|
"Home" = "Главная";
|
||||||
"Explore" = "Навигация";
|
"Explore" = "Навигация";
|
||||||
@@ -183,12 +236,17 @@
|
|||||||
"Warning" = "Внимание";
|
"Warning" = "Внимание";
|
||||||
"TabIsHidden" = "Скрытая вкладка не может быть выбрана в качестве начальной страницы";
|
"TabIsHidden" = "Скрытая вкладка не может быть выбрана в качестве начальной страницы";
|
||||||
|
|
||||||
"DonateViaPayPal" = "Задонатить на PayPal";
|
"SupportDevelopment" = "Помочь с развитием проекта";
|
||||||
"SupportViaGhSponsors" = "Поддержать разработку в Github Sponsors";
|
"SupportDevelopmentDesc" = "Если вам понравился YTLite и вы хотели бы поддержать проект, то можете сделать это любым подходящим ниже способом.\nСпасибо❤";
|
||||||
|
"Contributors" = "О нас";
|
||||||
|
"OpenSourceLibs" = "Библиотеки с исходным кодом";
|
||||||
"Version" = "Версия";
|
"Version" = "Версия";
|
||||||
|
"Preferences" = "Параметры %@";
|
||||||
"About" = "О твике";
|
"About" = "О твике";
|
||||||
"Credits" = "Авторы";
|
"Credits" = "Авторы";
|
||||||
"Developer" = "Разработчик твика";
|
"Developer" = "Разработчик твика";
|
||||||
|
"SpecialThanks" = "Особая благодарность";
|
||||||
|
"SpecialThanks.Test" = "Неоценимый вклад в тестирование твика";
|
||||||
"ChineseSimplified" = "Китайская (упрощенная) локализация";
|
"ChineseSimplified" = "Китайская (упрощенная) локализация";
|
||||||
"ChineseTraditional" = "Китайская (традиционная) локализация";
|
"ChineseTraditional" = "Китайская (традиционная) локализация";
|
||||||
"French" = "Французская локализация";
|
"French" = "Французская локализация";
|
||||||
@@ -196,26 +254,91 @@
|
|||||||
"Japanese" = "Японская локализация";
|
"Japanese" = "Японская локализация";
|
||||||
"Vietnamese" = "Вьетнамская локализация";
|
"Vietnamese" = "Вьетнамская локализация";
|
||||||
"Advanced" = "Расширенный режим";
|
"Advanced" = "Расширенный режим";
|
||||||
|
"AdvancedDesc" = "Более настраиваемый режим";
|
||||||
|
"AdvancedModeEnabled" = "Расширенный режим активирован";
|
||||||
|
"AdvancedModeDisabled" = "Расширенный режим отключен";
|
||||||
"AdvancedModeReminder" = "Хотите ли вы активировать расширенный режим настроек YTLite?\n\nДанный режим добавляет более 50 опций для тонкой настройки YouTube. Вы всегда сможете включить/отключить расширенный режим перейдя в Настройки → %@ → %@ → %@.";
|
"AdvancedModeReminder" = "Хотите ли вы активировать расширенный режим настроек YTLite?\n\nДанный режим добавляет более 50 опций для тонкой настройки YouTube. Вы всегда сможете включить/отключить расширенный режим перейдя в Настройки → %@ → %@ → %@.";
|
||||||
"ClearCache" = "Очистить кеш";
|
"ClearCache" = "Очистить кеш";
|
||||||
"ResetSettings" = "Сбросить настройки твика";
|
"ImportPreferences" = "Импортировать настройки";
|
||||||
"ResetMessage" = "Данное действие сбросит настройки YTLite к значениям по умолчанию и закроет YouTube.\n\nУверены, что хотите продолжить?";
|
"PreImportMessage" = "Данное действие перезапишет существующие настройки твика на те, что будут в выбираемом файле.\n\nУверены, что хотите продолжить?";
|
||||||
|
"ExportPreferences" = "Экспортировать настройки";
|
||||||
|
"ResetSettings" = "Восстановить настройки по умолчанию";
|
||||||
|
"ClearCacheMessage" = "Вы собираетесь удалить %@ кеша.\n\nХотите продолжить?";
|
||||||
|
"ResetMessage" = "Данное действие вернет настройки YTLite к значениям по умолчанию.\n\nУверены, что хотите продолжить?";
|
||||||
"ShortsOnlyWarning" = "Вы уверены, что хотите активировать данный режим?\n\nВ данном режиме вы не сможете ничего делать, кроме как смотреть видеоролики Shorts.\n\nРежим Shorts можно будет отключить зажав в плеере двумя пальцами.";
|
"ShortsOnlyWarning" = "Вы уверены, что хотите активировать данный режим?\n\nВ данном режиме вы не сможете ничего делать, кроме как смотреть видеоролики Shorts.\n\nРежим Shorts можно будет отключить зажав в плеере двумя пальцами.";
|
||||||
"ShortsModeTurnedOff" = "Режим Shorts был отключен";
|
"ShortsModeTurnedOff" = "Режим Shorts был отключен";
|
||||||
|
"LibraryAdded" = "Вкладка «Вы»/«Библиотека» восстановлена";
|
||||||
|
"LibraryRemoved" = "Вкладка «Вы»/«Библиотека» удалена";
|
||||||
"Yes" = "Да";
|
"Yes" = "Да";
|
||||||
"No" = "Нет";
|
"No" = "Нет";
|
||||||
|
|
||||||
|
"Select" = "Выбрать";
|
||||||
|
"Default" = "По умолчанию";
|
||||||
|
"Best" = "Лучшее";
|
||||||
|
"Show" = "Отображать";
|
||||||
|
"Disable" = "Отключено";
|
||||||
|
"Disabled" = "Отключить";
|
||||||
|
"PlaybackSpeed" = "Скорость воспроизведения";
|
||||||
|
"SpeedPreserved" = "Скорость сохранена";
|
||||||
|
"ResetSpeed" = "Сбросить";
|
||||||
|
|
||||||
|
"Brightness" = "Яркость";
|
||||||
|
"Toast.PlaybackSpeed" = "Скорость";
|
||||||
|
|
||||||
"SelectAction" = "Выберите действие";
|
"SelectAction" = "Выберите действие";
|
||||||
"CopyTitle" = "Скопировать название";
|
"DownloadVideo" = "Скачать видео";
|
||||||
|
"DownloadAudio" = "Скачать аудио";
|
||||||
|
"SaveImage" = "Сохранить обложку";
|
||||||
|
"CopyInformation" = "Скопировать информацию";
|
||||||
|
"CopyChannelName" = "Скопировать название канала";
|
||||||
|
"CopyTitle" = "Скопировать название видео";
|
||||||
"CopyDescription" = "Скопировать описание";
|
"CopyDescription" = "Скопировать описание";
|
||||||
|
"CopyTimestampedLink" = "Скопировать ссылку со временной отметкой";
|
||||||
|
"PlayInExternalPlayer" = "Воспроизвести в стороннем плеере";
|
||||||
|
"PlayInSystemPlayer" = "Воспроизвести в системном плеере";
|
||||||
|
"PlayInInfuse" = "Воспроизвести в Infuse";
|
||||||
|
"PlayInVLC" = "Воспроизвести в VLC";
|
||||||
|
"PlayerNotFound" = "Приложение не найдено";
|
||||||
|
"OpenAsRegularVideo" = "Открыть как обычное видео";
|
||||||
"CopyPostText" = "Скопировать текст поста";
|
"CopyPostText" = "Скопировать текст поста";
|
||||||
|
"SaveCurrentImage" = "Сохранить данное фото";
|
||||||
|
"CopyCurrentImage" = "Скопировать данное фото";
|
||||||
"SavePostAsImage" = "Сохранить пост как фото";
|
"SavePostAsImage" = "Сохранить пост как фото";
|
||||||
"CopyPostAsImage" = "Скопировать пост как фото";
|
"CopyPostAsImage" = "Скопировать пост как фото";
|
||||||
"CopyCommentText" = "Скопировать текст комментария";
|
"CopyCommentText" = "Скопировать текст комментария";
|
||||||
"SaveCommentAsImage" = "Сохранить комментарий как фото";
|
"SaveCommentAsImage" = "Сохранить комментарий как фото";
|
||||||
"CopyCommentAsImage" = "Скопировать комментарий как фото";
|
"CopyCommentAsImage" = "Скопировать комментарий как фото";
|
||||||
|
"SaveProfilePicture" = "Сохранить фото профиля";
|
||||||
|
"CopyProfilePicture" = "Скопировать фото профиля";
|
||||||
|
"DownloadThumbnail" = "Скачать обложку";
|
||||||
|
"CopyThumbnail" = "Скопировать обложку";
|
||||||
"Cancel" = "Отмена";
|
"Cancel" = "Отмена";
|
||||||
|
"Cancelled" = "Операция отменена";
|
||||||
"Copied" = "Скопировано в буфер обмена";
|
"Copied" = "Скопировано в буфер обмена";
|
||||||
"Saved" = "Сохранено в Фото";
|
"Saved" = "Сохранено в Фото";
|
||||||
"Done" = "Готово";
|
"Done" = "Готово";
|
||||||
"Error" = "Ошибка";
|
"Error" = "Ошибка";
|
||||||
|
"Error.Clipboard" = "Ошибка. Проверьте буфер обмена для полной информации";
|
||||||
|
"Error.PathIssue" = "Ошибка. Не удалось сгенерировать конечный путь. Проблема в названии медиафайла?";
|
||||||
|
"Error.NoSpace" = "Недостаточно места на устройстве.\n\nНеобходимо еще как минимум %@. Доступно %@";
|
||||||
|
"Error.Multidownloading" = "Параллельная загрузка пока еще не доступна.";
|
||||||
|
"Error.FailedToImport" = "Не удалось импортировать настройки";
|
||||||
|
"DownloadingVideo" = "Загрузка видео";
|
||||||
|
"DownloadingAudio" = "Загрузка аудио";
|
||||||
|
"Converting" = "Конвертация";
|
||||||
|
"RetryLogin" = "Авторизация активирована.\n\nПопробуйте заново.";
|
||||||
|
"LoginInfo" = "Необходимо перезапустить приложение после успешной авторизации в аккаунт Google";
|
||||||
|
|
||||||
|
"Welcome.Download" = "Загрузка медиа";
|
||||||
|
"Welcome.DownloadDesc" = "Скачивайте понравившийся контент, будь то Видео, Shorts, Аудио либо Фото профиля. Копируйте интересные посты и комментарии либо же сохраняйте их в качестве изображений";
|
||||||
|
"Welcome.Content" = "Настраиваемый интерфейс";
|
||||||
|
"Welcome.ContentDesc" = "Удаляйте ненужный контент и скройте ненужные элементы интерфейса. Также доступен OLED-совместимый темный режим";
|
||||||
|
"Welcome.Player" = "Настройка плеера";
|
||||||
|
"Welcome.PlayerDesc" = "Кастомизируйте поведение плеера, автовыбор качества и скорости. Управляйте жестами";
|
||||||
|
"Welcome.More" = "И даже больше...";
|
||||||
|
"Welcome.MoreDesc" = "YouTube Plus содержит в себе более 50 различных опций, включая такие, как сохранение настроек и очистка кеша. Настройки доступны в разделе YouTube Plus в настройках YouTube";
|
||||||
|
"SupportMe" = "Задонатить";
|
||||||
|
"Continue" = "Продолжить";
|
||||||
|
|
||||||
|
"DonationReminder" = "Ваша поддержка делает YTPlus лучше... Загляните в настройки твика";
|
||||||
|
"DontRemind" = "Откл.";
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 5.8 KiB |
@@ -1,219 +1,344 @@
|
|||||||
"General" = "Chung";
|
"Downloading" = "Downloading";
|
||||||
"RemoveAds" = "Loại bỏ các quảng cáo";
|
"DownloadManager" = "Download manager";
|
||||||
"RemoveAdsDesc" = "Loại bỏ quảng cáo trong ứng dụng.";
|
"DownloadManagerDesc" = "Replaces 'Download' button action under the player with a Download Manager, which allows downloading Video, Audio, Thumbnail Image, and Copying Video Information.\n\nTo download 2K+ videos, enable YTUHD tweak.";
|
||||||
"BackgroundPlayback" = "Phát lại ở chế độ nền";
|
"DownloadManagerYtl" = "Add as YouTube Plus button";
|
||||||
"BackgroundPlaybackDesc" = "Cho phép phát lại ở chế độ nền.";
|
"DownloadManagerYtlDesc" = "Adds YouTube Plus button for download manager under the player.";
|
||||||
|
"PostManager" = "Lưu bài đăng";
|
||||||
"Navbar" = "Thanh điều hướng";
|
"PostManagerDesc" = "Cho phép sao chép văn bản bài đăng và lưu bài đăng dưới dạng hình ảnh bằng cách nhấn giữ.";
|
||||||
"RemoveCast" = "Ẩn nút Cast";
|
"SaveProfilePhoto" = "Lưu ảnh hồ sơ";
|
||||||
"RemoveCastDesc" = "Ẩn nút Cast khỏi thanh Điều hướng.";
|
"SaveProfilePhotoDesc" = "Lưu ảnh hồ sơ vào ứng dụng Ảnh bằng cách nhấn và giữ.";
|
||||||
"RemoveNotifications" = "Ẩn nút Thông báo";
|
"CommentManager" = "Lưu bình luận";
|
||||||
"RemoveNotificationsDesc" = "Ẩn nút Thông báo khỏi thanh Điều hướng.";
|
"CommentManagerDesc" = "Cho phép sao chép văn bản bình luận và lưu bình luận dưới dạng hình ảnh bằng cách nhấn giữ.";
|
||||||
"RemoveSearch" = "Ẩn nút Tìm kiếm";
|
|
||||||
"RemoveSearchDesc" = "Ẩn nút Tìm kiếm khỏi thanh Điều hướng.";
|
"Navbar" = "Thanh điều hướng";
|
||||||
"RemoveVoiceSearch" = "Ẩn nút tìm kiếm bằng giọng nói";
|
"RemoveCast" = "Ẩn nút Cast";
|
||||||
"RemoveVoiceSearchDesc" = "Ẩn nút tìm kiếm bằng giọng nói khỏi thanh Điều hướng.";
|
"RemoveCastDesc" = "Ẩn nút Cast khỏi thanh Điều hướng.";
|
||||||
"StickyNavbar" = "Thanh điều hướng cố định";
|
"RemoveNotifications" = "Ẩn nút Thông báo";
|
||||||
"StickyNavbarDesc" = "Ghim thanh Điều hướng để nó vẫn hiển thị khi cuộn xuống.";
|
"RemoveNotificationsDesc" = "Ẩn nút Thông báo khỏi thanh Điều hướng.";
|
||||||
"NoSubbar" = "Ẩn thanh phụ";
|
"RemoveSearch" = "Ẩn nút Tìm kiếm";
|
||||||
"NoSubbarDesc" = "Ẩn Thanh phụ (Tất cả, Mới đối với bạn, Trực tiếp, v.v.) dưới thanh Điều hướng.";
|
"RemoveSearchDesc" = "Ẩn nút Tìm kiếm khỏi thanh Điều hướng.";
|
||||||
"NoYTLogo" = "Xóa biểu tượng YouTube";
|
"RemoveVoiceSearch" = "Ẩn nút tìm kiếm bằng giọng nói";
|
||||||
"NoYTLogoDesc" = "Xóa logo YouTube trong thanh Điều hướng.";
|
"RemoveVoiceSearchDesc" = "Ẩn nút tìm kiếm bằng giọng nói khỏi thanh Điều hướng.";
|
||||||
|
"RemoveSponsorBlock" = "Hide SponsorBlock button";
|
||||||
"Overlay" = "Lớp phủ";
|
"RemoveSponsorBlockDesc" = "Hides SponsorBlock button from the Navigation bar.";
|
||||||
"HideAutoplay" = "Ẩn nút Tự động phát";
|
"StickyNavbar" = "Thanh điều hướng cố định";
|
||||||
"HideAutoplayDesc" = "Ẩn nút Tự động phát trong trình phát video.";
|
"StickyNavbarDesc" = "Ghim thanh Điều hướng để nó vẫn hiển thị khi cuộn xuống.";
|
||||||
"HideSubs" = "Ẩn nút phụ đề";
|
"NoSubbar" = "Ẩn thanh phụ";
|
||||||
"HideSubsDesc" = "Ẩn nút Phụ đề khỏi lớp phủ.";
|
"NoSubbarDesc" = "Ẩn Thanh phụ (Tất cả, Mới đối với bạn, Trực tiếp, v.v.) dưới thanh Điều hướng.";
|
||||||
"NoHUDMsgs" = "Ẩn thông báo HUD";
|
"NoYTLogo" = "Xóa biểu tượng YouTube";
|
||||||
"NoHUDMsgsDesc" = "Ẩn tất cả các thông báo tính năng từ người chơi. Ví dụ: CC được bật/tắt, Vòng lặp video được bật, v.v.";
|
"NoYTLogoDesc" = "Xóa biểu tượng YouTube trong thanh Điều hướng.";
|
||||||
"HidePrevNext" = "Ẩn nút Trước và Tiếp theo";
|
"PremiumYTLogo" = "Đặt biểu tượng YouTube Premium";
|
||||||
"HidePrevNextDesc" = "Ẩn các nút Trước và Tiếp theo khỏi lớp phủ video.";
|
"PremiumYTLogoDesc" = "Đặt biểu tượng YouTube Premium trong thanh Điều hướng.";
|
||||||
"ReplacePrevNext" = "Nút tua đi và tua lại nhanh";
|
|
||||||
"ReplacePrevNextDesc" = "Thay thế các nút Trước và Tiếp theo thành nút tua đi và tua lại nhanh trong lớp phủ video.";
|
"Feed" = "Feed";
|
||||||
"NoDarkBg" = "Xóa nền tối";
|
"RemoveAds" = "Loại bỏ các quảng cáo";
|
||||||
"NoDarkBgDesc" = "Loại bỏ nền tối của lớp phủ.";
|
"RemoveAdsDesc" = "Loại bỏ quảng cáo trong ứng dụng.";
|
||||||
"NoEndScreenCards" = "Ẩn video dạng thumbnails";
|
"HideShorts" = "Ẩn Shorts";
|
||||||
"NoEndScreenCardsDesc" = "Ẩn thumbnail của các video đề xuất, xuất hiện ở cuối video.";
|
"HideShortsDesc" = "Ẩn Shorts khỏi Trang chủ, Được đề xuất, v.v. (Không áp dụng cho Lịch sử xem)";
|
||||||
"NoFullscreenActions" = "Vô hiệu hóa các hành động toàn màn hình";
|
"KeepSubsShorts" = "Keep Shorts in Subscriptions";
|
||||||
"NoFullscreenActionsDesc" = "Vô hiệu hóa bảng hành động ở chế độ toàn màn hình.";
|
"KeepSubsShortsDesc" = "Prevents removing Shorts from Subscriptions tab.";
|
||||||
"PersistentProgressBar" = "Thanh tiến trình liên tục";
|
"RemoveCommunityPosts" = "Remove community posts";
|
||||||
"PersistentProgressBarDesc" = "Luôn hiển thị thanh tiến trình trong trình phát.";
|
"RemoveCommunityPostsDesc" = "Removes community posts from the feed.";
|
||||||
"NoRelatedVids" = "Không có video liên quan trong lớp phủ";
|
"RemoveMoreTopics" = "Remove \"More topics\"";
|
||||||
"NoRelatedVidsDesc" = "Xóa các video liên quan được hiển thị trong lớp phủ bằng cách vuốt lên.";
|
"RemoveMoreTopicsDesc" = "Removes \"More topics\" from the feed.";
|
||||||
"NoPromotionCards" = "Ẩn thẻ Quảng cáo trả phí";
|
"FixAlbums" = "Sửa Albums";
|
||||||
"NoPromotionCardsDesc" = "Ẩn thẻ \"Bao gồm quảng cáo trả phí\" trong các video có quảng cáo.";
|
"FixAlbumsDesc" = "Sửa lỗi hiển thị Albums cho người dùng Nga.";
|
||||||
"NoWatermarks" = "Ẩn watermark của kênh";
|
|
||||||
"NoWatermarksDesc" = "Ẩn watermark của kênh trong video. Yêu cầu khởi động lại ứng dụng.";
|
"Player" = "Trình phát";
|
||||||
|
"Player.Overlay" = "Lớp phủ";
|
||||||
"Player" = "Trình phát";
|
"SpeedControls" = "Speed controls";
|
||||||
"Miniplayer" = "Cho phép sử dụng trình phát thu nhỏ với mọi video";
|
"SpeedControlsDesc" = "Shows speed control buttons on overlay";
|
||||||
"MiniplayerDesc" = "Cho phép sử dụng trình phát thu nhỏ với mọi video ban đầu không được thiết kế cho trình phát đó, chẳng hạn như các video dành cho trẻ em.";
|
"HideAutoplay" = "Ẩn nút Tự động phát";
|
||||||
"PortraitFullscreen" = "Chế độ toàn màn hình dọc";
|
"HideAutoplayDesc" = "Ẩn nút Tự động phát trong trình phát video.";
|
||||||
"PortraitFullscreenDesc" = "Cho phép hỗ trợ chế độ toàn màn hình dọc.";
|
"HideSubs" = "Ẩn nút phụ đề";
|
||||||
"CopyWithTimestamp" = "Sao chép các liên kết có dấu thời gian";
|
"HideSubsDesc" = "Ẩn nút Phụ đề khỏi lớp phủ.";
|
||||||
"CopyWithTimestampDesc" = "Cho phép sao chép liên kết có dấu thời gian vào bảng tạm bằng cách nhấn nút tạm dừng.";
|
"HidePrevNext" = "Ẩn nút Trước và Tiếp theo";
|
||||||
"DisableAutoplay" = "Tắt video Tự động phát";
|
"HidePrevNextDesc" = "Ẩn các nút Trước và Tiếp theo khỏi lớp phủ video.";
|
||||||
"DisableAutoplayDesc" = "Ngăn chặn phát lại video sau khi mở.";
|
"ReplacePrevNext" = "Nút tua đi và tua lại nhanh";
|
||||||
"DisableAutoCaptions" = "Tắt chú thích tự động";
|
"ReplacePrevNextDesc" = "Thay thế các nút Trước và Tiếp theo thành nút tua đi và tua lại nhanh trong lớp phủ video.";
|
||||||
"DisableAutoCaptionsDesc" = "Ngăn chặn việc tự động kích hoạt chú thích.";
|
"NoDarkBg" = "Xóa nền tối";
|
||||||
"NoContentWarning" = "Bỏ qua cảnh báo nội dung";
|
"NoDarkBgDesc" = "Loại bỏ nền tối của lớp phủ.";
|
||||||
"NoContentWarningDesc" = "Bỏ qua thông báo cảnh báo nội dung nhạy cảm.";
|
"NoEndScreenCards" = "Ẩn video dạng thumbnails";
|
||||||
"ClassicQuality" = "Chất lượng video cổ điển";
|
"NoEndScreenCardsDesc" = "Ẩn thumbnail của các video đề xuất, xuất hiện ở cuối video.";
|
||||||
"ClassicQualityDesc" = "Mang lại menu lựa chọn chất lượng video cổ điển.";
|
"NoAutonavEndScreenCards" = "Hide auto-play end screen";
|
||||||
"ExtraSpeedOptions" = "Bổ sung tùy chọn tốc độ";
|
"NoAutonavEndScreenCardsDesc" = "Hides the screen that shows what you can play next after playback ended. Disabling this option also disables auto-play";
|
||||||
"ExtraSpeedOptionsDesc" = "Thêm nhiều tùy chọn tốc độ phát video vào menu trình phát.";
|
"NoFullscreenActions" = "Vô hiệu hóa các hành động toàn màn hình";
|
||||||
"DontSnap2Chapter" = "Tắt tự động chuyển tới chương";
|
"NoFullscreenActionsDesc" = "Vô hiệu hóa bảng hành động ở chế độ toàn màn hình.";
|
||||||
"DontSnap2ChapterDesc" = "Tắt tính năng tự động chuyển tới chương gần nhất khi tua video.";
|
"PersistentProgressBar" = "Thanh tiến trình liên tục";
|
||||||
"RedProgressBar" = "Thanh tiến trình màu đỏ";
|
"PersistentProgressBarDesc" = "Luôn hiển thị thanh tiến trình trong trình phát.";
|
||||||
"RedProgressBarDesc" = "Mang lại thanh tiến trình màu đỏ.";
|
"StockVolumeHUD" = "Sử dụng thanh âm lượng mặc định của iOS";
|
||||||
"NoHints" = "Tắt gợi ý";
|
"StockVolumeHUDDesc" = "Sử dụng thanh âm lượng mặc định ở chế độ toàn màn hình.";
|
||||||
"NoHintsDesc" = "Tắt gợi ý của tác giả xuất hiện ở góc trên bên phải trong khi phát lại.";
|
"NoRelatedVids" = "Không có video liên quan trong lớp phủ";
|
||||||
"NoFreeZoom" = "Tắt tính năng chạm để thu phóng";
|
"NoRelatedVidsDesc" = "Xóa các video liên quan được hiển thị trong lớp phủ bằng cách vuốt lên.";
|
||||||
"NoFreeZoomDesc" = "Tắt tính năng chạm để thu phóng";
|
"NoPromotionCards" = "Ẩn thẻ Quảng cáo trả phí";
|
||||||
"AutoFullscreen" = "Phát video ở chế độ toàn màn hình";
|
"NoPromotionCardsDesc" = "Ẩn thẻ \"Bao gồm quảng cáo trả phí\" trong các video có quảng cáo.";
|
||||||
"AutoFullscreenDesc" = "Tự động phát video ở chế độ toàn màn hình.";
|
"NoWatermarks" = "Ẩn watermark của kênh";
|
||||||
"ExitFullscreen" = "Thoát chế độ toàn màn hình khi hoàn tất";
|
"NoWatermarksDesc" = "Ẩn watermark của kênh trong video. Yêu cầu khởi động lại ứng dụng.";
|
||||||
"ExitFullscreenDesc" = "Thoát khỏi chế độ toàn màn hình khi kết thúc phát video.";
|
"VideoEndTime" = "Hiển thị thời gian kết thúc phát";
|
||||||
"NoDoubleTap2Seek" = "Tắt tình năng chạm 2 lần để tua";
|
"VideoEndTimeDesc" = "Thêm thời gian kết thúc phát video vào thanh trình phát.";
|
||||||
"NoDoubleTap2SeekDesc" = "Tắt tình năng chạm 2 lần để tua";
|
"24hrFormat" = "định dạng 24 giờ";
|
||||||
|
"24hrFormatDesc" = "Hiển thị thời gian kết thúc ở định dạng 24 giờ.";
|
||||||
"Tabbar" = "Thanh tab";
|
|
||||||
"RemoveLabels" = "Xóa nhãn";
|
"Player.Interface" = "Interface";
|
||||||
"RemoveLabelsDesc" = "Loại bỏ nhãn tab.";
|
"PortraitFullscreen" = "Chế độ toàn màn hình dọc";
|
||||||
"RemoveIndicators" = "Xóa chỉ báo";
|
"PortraitFullscreenDesc" = "Cho phép hỗ trợ chế độ toàn màn hình dọc.";
|
||||||
"RemoveIndicatorsDesc" = "Loại bỏ các chỉ báo tab.";
|
"ClassicQuality" = "Chất lượng video cổ điển";
|
||||||
"ReExplore" = "Thay thế tab Shorts bằng tab Khám phá";
|
"ClassicQualityDesc" = "Mang lại menu lựa chọn chất lượng video cổ điển.";
|
||||||
"ReExploreDesc" = "Hiển thị tab Khám phá thay vì tab Shorts như trên các phiên bản YouTube cũ.";
|
"ExtraSpeedOptions" = "Bổ sung tùy chọn tốc độ";
|
||||||
"AddExplore" = "Thêm tab Khám phá";
|
"ExtraSpeedOptionsDesc" = "Thêm nhiều tùy chọn tốc độ phát video vào menu trình phát.";
|
||||||
"AddExploreDesc" = "Thêm tab Khám phá vào thanh Tab.";
|
"RedProgressBar" = "Thanh tiến trình màu đỏ";
|
||||||
"HideShortsTab" = "Ẩn tab Shorts";
|
"RedProgressBarDesc" = "Mang lại thanh tiến trình màu đỏ.";
|
||||||
"HideShortsTabDesc" = "Ẩn tab Shorts khỏi thanh Tab.";
|
"NoPlayerRemixButton" = "Xóa nút phối lại";
|
||||||
"HideSubscriptionsTab" = "Ẩn tab Đăng ký";
|
"NoPlayerRemixButtonDesc" = "Xóa nút phối lại bên dưới trình phát.";
|
||||||
"HideSubscriptionsTabDesc" = "Ẩn tab Đăng ký khỏi thanh Tab.";
|
"NoPlayerClipButton" = "Xóa nút clip";
|
||||||
"HideUploadButton" = "Ẩn nút Tải lên";
|
"NoPlayerClipButtonDesc" = "Xóa nút clip bên dưới trình phát.";
|
||||||
"HideUploadButtonDesc" = "Ẩn nút Tải lên khỏi thanh Tab.";
|
"NoPlayerDownloadButton" = "Xóa nút tải xuống";
|
||||||
"HideLibraryTab" = "Ẩn tab Thư viện";
|
"NoPlayerDownloadButtonDesc" = "Xóa nút tải xuống dưới trình phát.";
|
||||||
"HideLibraryTabDesc" = "Ẩn tab Thư viện khỏi thanh Tab.";
|
|
||||||
|
"Player.Actions" = "Actions";
|
||||||
"Shorts" = "Shorts";
|
"BackgroundPlayback" = "Phát ở chế độ nền";
|
||||||
"ShortsOnlyMode" = "Chế độ chỉ dành cho Short";
|
"BackgroundPlaybackDesc" = "Cho phép phát ở chế độ nền.";
|
||||||
"ShortsOnlyModeDesc" = "Giới hạn chức năng của YouTube chỉ ở chế độ Short.";
|
"Miniplayer" = "Cho phép sử dụng trình phát thu nhỏ với mọi video";
|
||||||
"HideShorts" = "Ẩn Shorts";
|
"MiniplayerDesc" = "Cho phép sử dụng trình phát thu nhỏ với mọi video ban đầu không được thiết kế cho trình phát đó, chẳng hạn như các video dành cho trẻ em.";
|
||||||
"HideShortsDesc" = "Ẩn Shorts khỏi Trang chủ, Được đề xuất, v.v. (Không áp dụng cho Lịch sử xem)";
|
"DisableAutoplay" = "Tắt video Tự động phát";
|
||||||
"ShortsProgress" = "Bật thanh tiến trình";
|
"DisableAutoplayDesc" = "Ngăn chặn phát video sau khi mở.";
|
||||||
"ShortsProgressDesc" = "Hiển thị thanh tiến trình trong lớp phủ Shorts.";
|
"DisableAutoCaptions" = "Tắt chú thích tự động";
|
||||||
"PinchToFullscreenShorts" = "Chụm vào toàn màn hình";
|
"DisableAutoCaptionsDesc" = "Ngăn chặn việc tự động kích hoạt chú thích.";
|
||||||
"PinchToFullscreenShortsDesc" = "Quản lý khả năng hiển thị của lớp phủ bằng cử chỉ chụm vào và kéo ra, hiển thị Shorts ở chế độ toàn màn hình.";
|
"NoContentWarning" = "Bỏ qua cảnh báo nội dung";
|
||||||
"ShortsToRegular" = "Từ Shorts đến video thông thường";
|
"NoContentWarningDesc" = "Bỏ qua thông báo cảnh báo nội dung nhạy cảm.";
|
||||||
"ShortsToRegularDesc" = "Mở Shorts như video thông thường.";
|
"NoHints" = "Tắt gợi ý";
|
||||||
"ResumeShorts" = "Tắt tính năng tự động tiếp tục Shorts";
|
"NoHintsDesc" = "Tắt gợi ý của tác giả xuất hiện ở góc trên bên phải trong khi phát.";
|
||||||
"ResumeShortsDesc" = "Nếu bạn thoát YouTube trong khi đang xem video Shorts, video Shorts đó sẽ không tự động phát khi bạn mở lại YouTube.";
|
"AutoFullscreen" = "Phát video ở chế độ toàn màn hình";
|
||||||
"HideShortsLogo" = "Ẩn biểu tượng Shorts";
|
"AutoFullscreenDesc" = "Tự động phát video ở chế độ toàn màn hình.";
|
||||||
"HideShortsLogoDesc" = "Ẩn biểu tượng Shorts ở góc trên cùng bên trái.";
|
"ExitFullscreen" = "Thoát chế độ toàn màn hình khi hoàn tất";
|
||||||
"HideShortsSearch" = "Ẩn nút Tìm kiếm";
|
"ExitFullscreenDesc" = "Thoát khỏi chế độ toàn màn hình khi kết thúc phát video.";
|
||||||
"HideShortsSearchDesc" = "Ẩn nút Tìm kiếm khỏi lớp phủ Shorts.";
|
|
||||||
"HideShortsCamera" = "Ẩn nút Máy ảnh";
|
"Player.Gestures" = "Gestures";
|
||||||
"HideShortsCameraDesc" = "Ẩn nút Máy ảnh khỏi lớp phủ Shorts.";
|
"AdjustWithFinger" = "Adjust speed by gestures";
|
||||||
"HideShortsMore" = "Ẩn nút Thêm (⋮)";
|
"AdjustWithFingerDesc" = "Allows adjusting playback speed by long press on player and moving finger up and down";
|
||||||
"HideShortsMoreDesc" = "Ẩn nút Thêm (⋮) khỏi lớp phủ Shorts. Nó cũng có thể truy cập được bằng cách nhấn và giữ màn hình.";
|
"PreserveSpeed" = "Preserve Speed";
|
||||||
"HideShortsSubscriptions" = "Ẩn nút Đăng ký";
|
"PreserveSpeedDesc" = "Preserves adjusted speed after gesture completion";
|
||||||
"HideShortsSubscriptionsDesc" = "Ẩn nút Đăng ký xuất hiện khi Shorts bị tạm dừng.";
|
"TwoFingerTapToPause" = "Pause using two fingers";
|
||||||
"HideShortsLike" = "Ẩn nút Thích";
|
"TwoFingerTapToPauseDesc" = "Pause/Resume playback by tapping on the screen using two fingers.";
|
||||||
"HideShortsLikeDesc" = "Ẩn nút Thích khỏi lớp phủ Shorts.";
|
"TwoFingerPanToBrightness" = "Adjust brightness";
|
||||||
"HideShortsDislike" = "Ẩn nút Không thích";
|
"TwoFingerPanToBrightnessDesc" = "Allows adjusting screen brigthness by sliding up/down using two fingers.";
|
||||||
"HideShortsDislikeDesc" = "Ẩn nút Không thích khỏi lớp phủ Shorts.";
|
"CopyWithTimestamp" = "Sao chép các liên kết có dấu thời gian";
|
||||||
"HideShortsComments" = "Ẩn nút bình luận";
|
"CopyWithTimestampDesc" = "Cho phép sao chép liên kết có dấu thời gian vào bảng tạm bằng cách nhấn nút tạm dừng.";
|
||||||
"HideShortsCommentsDesc" = "Ẩn nút bình luận khỏi lớp phủ Shorts.";
|
"PauseOnOverlay" = "Tạm dừng trên lớp phủ";
|
||||||
"HideShortsRemix" = "Ẩn nút phối lại";
|
"PauseOnOverlayDesc" = "Đặt chế độ phát ở trạng thái tạm dừng nếu lớp phủ xuất hiện.";
|
||||||
"HideShortsRemixDesc" = "Ẩn nút Phối lại khỏi lớp phủ Shorts.";
|
"DontSnap2Chapter" = "Tắt tự động chuyển tới chương";
|
||||||
"HideShortsShare" = "Ẩn nút Chia sẻ";
|
"DontSnap2ChapterDesc" = "Tắt tính năng tự động chuyển tới chương gần nhất khi tua video.";
|
||||||
"HideShortsShareDesc" = "Ẩn nút Chia sẻ khỏi lớp phủ Shorts.";
|
"NoTwoFingerSnapToChapter" = "Tắt tính năng chạm 2 lần bằng 2 ngón tay";
|
||||||
"HideShortsAvatars" = "Ẩn hình đại diện kênh";
|
"NoTwoFingerSnapToChapterDesc" = "Tắt thao tác chạm 2 lần bằng 2 ngón tay để chuyển tới chương.";
|
||||||
"HideShortsAvatarsDesc" = "Ẩn hình đại diện kênh ở góc dưới bên phải.";
|
"NoFreeZoom" = "Tắt tính năng chạm để thu phóng";
|
||||||
"HideShortsThanks" = "Ẩn nút Superthanks";
|
"NoFreeZoomDesc" = "Tắt tính năng chạm để thu phóng";
|
||||||
"HideShortsThanksDesc" = "Ẩn nút Superthanks (Quyên góp) khỏi lớp phủ Shorts.";
|
"NoDoubleTap2Seek" = "Tắt tình năng chạm 2 lần để tua";
|
||||||
"HideShortsSource" = "Ẩn nguồn Shorts";
|
"NoDoubleTap2SeekDesc" = "Tắt tình năng chạm 2 lần để tua";
|
||||||
"HideShortsSourceDesc" = "Ẩn nguồn Shorts dưới tên kênh.";
|
|
||||||
"HideShortsChannelName" = "Ẩn tên kênh";
|
"Shorts" = "Shorts";
|
||||||
"HideShortsChannelNameDesc" = "Ẩn tên kênh và nút đăng ký khỏi lớp phủ Shorts.";
|
"ShortsOnlyMode" = "Chế độ chỉ dành cho Short";
|
||||||
"HideShortsDescription" = "Ẩn mô tả";
|
"ShortsOnlyModeDesc" = "Giới hạn chức năng của YouTube chỉ ở chế độ Short.";
|
||||||
"HideShortsDescriptionDesc" = "Ẩn phần mô tả Shorts dưới tên kênh.";
|
"AutoSkipShorts" = "Tự động bỏ qua Shorts";
|
||||||
"HideShortsAudioTrack" = "Ẩn AudioTrack";
|
"AutoSkipShortsDesc" = "Chuyển sang video tiếp theo khi quá trình phát video hiện tại kết thúc.";
|
||||||
"HideShortsAudioTrackDesc" = "Ẩn AudioTrack trong phần mô tả Shorts.";
|
"ShortsProgress" = "Bật thanh tiến trình";
|
||||||
|
"ShortsProgressDesc" = "Hiển thị thanh tiến trình trong lớp phủ Shorts.";
|
||||||
"Other" = "Khác";
|
"SpeedByLongTap" = "Increase Shorts playback rate";
|
||||||
"CopyVideoInfo" = "Sao chép thông tin video";
|
"SpeedByLongTapDesc" = "Allows to speed up playback by long pressing on a certain part of the screen.";
|
||||||
"CopyVideoInfoDesc" = "Thêm nút để sao chép tiêu đề và mô tả video vào bảng Mô tả Video.";
|
"SpeedLocation" = "Activation location";
|
||||||
"PostManager" = "Lưu bài viết";
|
"LeftSide" = "Left side";
|
||||||
"PostManagerDesc" = "Cho phép sao chép văn bản bài viết và lưu bài viết dưới dạng hình ảnh bằng cách nhấn giữ.";
|
"RightSide" = "Right side";
|
||||||
"SavePostImage" = "Lưu hình ảnh từ bài viết trên cộng đồng";
|
"PinchToFullscreenShorts" = "Chụm vào toàn màn hình";
|
||||||
"SavePostImageDesc" = "Lưu hình ảnh bài viết của cộng đồng vào ứng dụng Ảnh bằng cách nhấn giữ.";
|
"PinchToFullscreenShortsDesc" = "Quản lý khả năng hiển thị của lớp phủ bằng cử chỉ chụm vào và kéo ra, hiển thị Shorts ở chế độ toàn màn hình.";
|
||||||
"SaveProfilePhoto" = "Lưu ảnh hồ sơ";
|
"ShortsToRegular" = "Từ Shorts đến video thông thường";
|
||||||
"SaveProfilePhotoDesc" = "Lưu ảnh hồ sơ vào ứng dụng Ảnh bằng cách nhấn và giữ.";
|
"ShortsToRegularDesc" = "Mở Shorts như video thông thường.";
|
||||||
"CommentManager" = "Save comment information";
|
"HideShortsLogo" = "Ẩn biểu tượng Shorts";
|
||||||
"CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
|
"HideShortsLogoDesc" = "Ẩn biểu tượng Shorts ở góc trên cùng bên trái.";
|
||||||
"FixAlbums" = "Sửa Albums";
|
"HideShortsSearch" = "Ẩn nút Tìm kiếm";
|
||||||
"FixAlbumsDesc" = "Sửa lỗi hiển thị Albums cho người dùng Nga.";
|
"HideShortsSearchDesc" = "Ẩn nút Tìm kiếm khỏi lớp phủ Shorts.";
|
||||||
"RemovePlayNext" = "Xóa \"Phát tiếp theo trong danh sách chờ\"";
|
"HideShortsCamera" = "Ẩn nút Máy ảnh";
|
||||||
"RemovePlayNextDesc" = "Xóa tùy chọn \"Phát tiếp theo trong danh sách chờ\" khỏi menu.";
|
"HideShortsCameraDesc" = "Ẩn nút Máy ảnh khỏi lớp phủ Shorts.";
|
||||||
"NoContinueWatching" = "Xóa \"Tiếp tục xem\"";
|
"HideShortsMore" = "Ẩn nút Thêm (⋮)";
|
||||||
"NoContinueWatchingDesc" = "Xóa phần \"Tiếp tục xem\" chứa các video chưa xem hết khỏi Trang chủ.";
|
"HideShortsMoreDesc" = "Ẩn nút Thêm (⋮) khỏi lớp phủ Shorts. Nó cũng có thể truy cập được bằng cách nhấn và giữ màn hình.";
|
||||||
"NoSearchHistory" = "Ẩn lịch sử tìm kiếm";
|
"HideShortsSubscriptions" = "Ẩn nút Đăng ký";
|
||||||
"NoSearchHistoryDesc" = "Ẩn lịch sử tìm kiếm và đề xuất một cách trực quan. Lưu ý: Lịch sử tìm kiếm của bạn vẫn có thể truy cập được trong các ứng dụng YouTube khác.";
|
"HideShortsSubscriptionsDesc" = "Ẩn nút Đăng ký xuất hiện khi Shorts bị tạm dừng.";
|
||||||
"NoRelatedWatchNexts" = "Ẩn tất cả video dưới trình phát";
|
|
||||||
"NoRelatedWatchNextsDesc" = "Ẩn tất cả video bên dưới trình phát, chỉ để lại phần thông tin video và nhận xét.";
|
"Tabbar" = "Thanh tab";
|
||||||
"StickSortComments" = "Dán tiêu đề bình luận";
|
"RemoveLabels" = "Xóa nhãn";
|
||||||
"StickSortCommentsDesc" = "Ghim sắp xếp tiêu đề nhận xét (Hàng đầu, Mới nhất) để nó không biến mất khi cuộn.";
|
"RemoveLabelsDesc" = "Loại bỏ nhãn tab.";
|
||||||
"HideSortComments" = "Ẩn bình luận";
|
"RemoveIndicators" = "Xóa chỉ báo";
|
||||||
"HideSortCommentsDesc" = "Ẩn bình luận Short, sắp xếp (Hàng đầu, Mới nhất) để nó không bao giờ xuất hiện.";
|
"RemoveIndicatorsDesc" = "Loại bỏ các chỉ báo tab.";
|
||||||
"PlaylistOldMinibar" = "Danh sách phát mini bar cũ";
|
"ReExplore" = "Thay thế tab Shorts bằng tab Khám phá";
|
||||||
"PlaylistOldMinibarDesc" = "Thay thế bảng điều khiển danh sách phát nổi mới bằng bảng điều khiển cũ.";
|
"ReExploreDesc" = "Hiển thị tab Khám phá thay vì tab Shorts như trên các phiên bản YouTube cũ.";
|
||||||
"DisableRTL" = "Tắt định dạng RTL";
|
"AddExplore" = "Thêm tab Khám phá";
|
||||||
"DisableRTLDesc" = "Hiển thị mạnh mẽ văn bản ở định dạng từ trái sang phải (LTR) cho các ngôn ngữ ban đầu được hiển thị ở định dạng từ phải sang trái (RTL).";
|
"AddExploreDesc" = "Thêm tab Khám phá vào thanh Tab.";
|
||||||
|
"HideShortsTab" = "Ẩn tab Shorts";
|
||||||
"Startup" = "Trang khởi động";
|
"HideShortsTabDesc" = "Ẩn tab Shorts khỏi thanh Tab.";
|
||||||
"Home" = "Trang chủ";
|
"HideSubscriptionsTab" = "Ẩn tab Đăng ký";
|
||||||
"Explore" = "Khám phá";
|
"HideSubscriptionsTabDesc" = "Ẩn tab Đăng ký khỏi thanh Tab.";
|
||||||
"ShortsTab" = "Shorts";
|
"HideUploadButton" = "Ẩn nút Tải lên";
|
||||||
"Subscriptions" = "Đăng ký";
|
"HideUploadButtonDesc" = "Ẩn nút Tải lên khỏi thanh Tab.";
|
||||||
"Library" = "Thư viện";
|
"HideLibraryTab" = "Ẩn tab Thư viện";
|
||||||
"Warning" = "Cảnh báo";
|
"HideLibraryTabDesc" = "Hides Library tab from the Tab bar.\n\nThis tab can be restored by long pressing Home tab.";
|
||||||
"TabIsHidden" = "Không thể chọn Tab ẩn làm trang khởi động";
|
|
||||||
|
"Interface" = "Interface";
|
||||||
"DonateViaPayPal" = "Quyên góp qua PayPal";
|
"OledTheme" = "Oled theme";
|
||||||
"SupportViaGhSponsors" = "Hỗ trợ phát triển thông qua Github";
|
"OledThemeDesc" = "Turns all dark colors to black";
|
||||||
"Version" = "Phiên bản";
|
"NativeShare" = "Bảng chia sẻ gốc";
|
||||||
"About" = "Giới thiệu";
|
"NativeShareDesc" = "Sử dụng bảng chia sẻ hệ thống để chia sẻ phương tiện";
|
||||||
"Credits" = "Credits";
|
"RemoveInlineComment" = "Remove inline comment";
|
||||||
"Developer" = "Nhà phát triển YTLite";
|
"RemoveInlineCommentDesc" = "Removes comment section under the player.";
|
||||||
"ChineseSimplified" = "Tiếng Trung (giản thể)";
|
"RemovePlayNext" = "Xóa \"Phát tiếp theo trong danh sách chờ\"";
|
||||||
"ChineseTraditional" = "Tiếng Trung (phồn thể)";
|
"RemovePlayNextDesc" = "Xóa tùy chọn \"Phát tiếp theo trong danh sách chờ\" khỏi menu.";
|
||||||
"French" = "Tiếng Pháp";
|
"RemoveDownloadMenu" = "Xóa \"Tải video xuống\"";
|
||||||
"Spanish" = "Tiếng Tây Ban Nha";
|
"RemoveDownloadMenuDesc" = "Xóa tùy chọn \"Tải video xuống\" khỏi menu.";
|
||||||
"Japanese" = "Tiếng Nhật";
|
"RemoveWatchLaterMenu" = "Xóa \"Lưu vào danh sách Xem sau\"";
|
||||||
"Vietnamese" = "Tiếng Việt";
|
"RemoveWatchLaterMenuDesc" = "Xóa tùy chọn \"Lưu vào danh sách Xem sau\" khỏi menu.";
|
||||||
"Advanced" = "Chế độ nâng cao";
|
"RemoveSaveToPlaylistMenu" = "Xóa \"Lưu vào danh sách phát\"";
|
||||||
"AdvancedModeReminder" = "Bạn có muốn kích hoạt Chế độ nâng cao cho YTLite không?\n\nChế độ này cung cấp hơn 50 tùy chọn bổ sung để tùy chỉnh và tối ưu hóa trải nghiệm YouTube của bạn. Bạn có thể Bật/Tắt nó sau từ Cài đặt → %@ → %@ → %@.";
|
"RemoveSaveToPlaylistMenuDesc" = "Xóa tùy chọn \"Lưu vào danh sách phát\" khỏi menu.";
|
||||||
"ClearCache" = "Xóa bộ nhớ đệm";
|
"RemoveShareMenu" = "Xóa \"Chia sẻ\"";
|
||||||
"ResetSettings" = "Đặt lại cài đặt YTLite";
|
"RemoveShareMenuDesc" = "Xóa tùy chọn \"Chia sẻ\" khỏi menu.";
|
||||||
"ResetMessage" = "Tùy chọn này sẽ đặt lại cài đặt YTLite về mặc định và đóng YouTube.\n\nBạn có chắc chắn muốn tiếp tục không?";
|
"RemoveNotInterestedMenu" = "Xóa \"Không quan tâm\"";
|
||||||
"ShortsOnlyWarning" = "Bạn có chắc chắn muốn kích hoạt chế độ này?\n\nỞ chế độ này, bạn sẽ chỉ có thể xem video Shorts và không thể làm gì khác.\n\nBạn có thể tắt Chế độ chỉ Shorts bằng cách nhấn và giữ bằng hai ngón tay trong trình phát Shorts.";
|
"RemoveNotInterestedMenuDesc" = "Xóa tùy chọn \"Không quan tâm\" khỏi menu.";
|
||||||
"ShortsModeTurnedOff" = "Chế độ chỉ dành cho Shorts đã bị tắt";
|
"RemoveDontRecommendMenu" = "Xóa \"Không đề xuất kênh này\"";
|
||||||
"Yes" = "Có";
|
"RemoveDontRecommendMenuDesc" = "Xóa tùy chọn \"Không đề xuất kênh này\" khỏi menu.";
|
||||||
"No" = "Không";
|
"RemoveReportMenu" = "Xóa \"Báo vi phạm\"";
|
||||||
|
"RemoveReportMenuDesc" = "Xóa tùy chọn \"Báo vi phạm\" khỏi menu.";
|
||||||
"SelectAction" = "Chọn hành động";
|
"NoContinueWatching" = "Xóa \"Tiếp tục xem\"";
|
||||||
"CopyTitle" = "Sao chép tiêu đề";
|
"NoContinueWatchingDesc" = "Xóa phần \"Tiếp tục xem\" chứa các video chưa xem hết khỏi Trang chủ.";
|
||||||
"CopyDescription" = "Sao chép mô tả";
|
"NoSearchHistory" = "Ẩn lịch sử tìm kiếm";
|
||||||
"CopyPostText" = "Sao chép văn bản bài viết";
|
"NoSearchHistoryDesc" = "Ẩn lịch sử tìm kiếm và đề xuất một cách trực quan. Lưu ý: Lịch sử tìm kiếm của bạn vẫn có thể truy cập được trong các ứng dụng YouTube khác.";
|
||||||
"SavePostAsImage" = "Lưu bài viết dưới dạng hình ảnh";
|
"NoRelatedWatchNexts" = "Ẩn tất cả video dưới trình phát";
|
||||||
"CopyPostAsImage" = "Sao chép bài viết dưới dạng hình ảnh";
|
"NoRelatedWatchNextsDesc" = "Ẩn tất cả video bên dưới trình phát, chỉ để lại phần thông tin video và nhận xét.";
|
||||||
"CopyCommentText" = "Copy comment text";
|
"StickSortComments" = "Dán tiêu đề bình luận";
|
||||||
"SaveCommentAsImage" = "Save comment as image";
|
"StickSortCommentsDesc" = "Ghim sắp xếp tiêu đề nhận xét (Hàng đầu, Mới nhất) để nó không biến mất khi cuộn.";
|
||||||
"CopyCommentAsImage" = "Copy comment as image";
|
"HideSortComments" = "Ẩn bình luận";
|
||||||
"Cancel" = "Hủy bỏ";
|
"HideSortCommentsDesc" = "Ẩn bình luận Short, sắp xếp (Hàng đầu, Mới nhất) để nó không bao giờ xuất hiện.";
|
||||||
"Copied" = "Sao chép vào clipboard";
|
"PlaylistOldMinibar" = "Danh sách phát mini bar cũ";
|
||||||
"Saved" = "Đã lưu vào Ảnh";
|
"PlaylistOldMinibarDesc" = "Thay thế bảng điều khiển danh sách phát nổi mới bằng bảng điều khiển cũ.";
|
||||||
"Done" = "Xong";
|
"StartupAnimation" = "Startup animation";
|
||||||
"Error" = "Lỗi";
|
"StartupAnimationDesc" = "Displays YouTube startup loading animation";
|
||||||
|
"OldYTUI" = "Old UI";
|
||||||
|
"OldYTUIDesc" = "Spoofs YouTube version so that it will return old interface";
|
||||||
|
"DisableRTL" = "Tắt định dạng RTL";
|
||||||
|
"DisableRTLDesc" = "Hiển thị mạnh mẽ văn bản ở định dạng từ trái sang phải (LTR) cho các ngôn ngữ ban đầu được hiển thị ở định dạng từ phải sang trái (RTL).";
|
||||||
|
|
||||||
|
"HoldToSpeed" = "Giữ tốc độ";
|
||||||
|
"DefaultPlaybackRate" = "Tốc độ phát mặc định";
|
||||||
|
"PlaybackQualityOnWiFi" = "Chất lượng Video trên mạng Wi-Fi";
|
||||||
|
"PlaybackQualityOnCellular" = "Chất lượng Video trên mạng di động";
|
||||||
|
|
||||||
|
"Startup" = "Trang khởi động";
|
||||||
|
"Home" = "Trang chủ";
|
||||||
|
"Explore" = "Khám phá";
|
||||||
|
"ShortsTab" = "Shorts";
|
||||||
|
"Subscriptions" = "Đăng ký";
|
||||||
|
"Library" = "Thư viện";
|
||||||
|
"Warning" = "Cảnh báo";
|
||||||
|
"TabIsHidden" = "Không thể chọn Tab ẩn làm trang khởi động";
|
||||||
|
|
||||||
|
"SupportDevelopment" = "Hỗ trợ nhà phát triển";
|
||||||
|
"SupportDevelopmentDesc" = "Nếu bạn thích YTLite và muốn hỗ trợ sự phát triển của nó, bạn có thể thực hiện bằng bất kỳ cách thuận tiện nào dưới đây.\nCảm ơn❤";
|
||||||
|
"Contributors" = "Người đóng góp";
|
||||||
|
"OpenSourceLibs" = "Thư viện nguồn mở";
|
||||||
|
"Preferences" = "%@ preferences";
|
||||||
|
"Version" = "Phiên bản";
|
||||||
|
"About" = "Giới thiệu";
|
||||||
|
"Credits" = "Credits";
|
||||||
|
"Developer" = "Nhà phát triển YTLite";
|
||||||
|
"SpecialThanks" = "Cảm tạ";
|
||||||
|
"SpecialThanks.Test" = "Invaluable contribution to tweak testing";
|
||||||
|
"ChineseSimplified" = "Tiếng Trung (giản thể)";
|
||||||
|
"ChineseTraditional" = "Tiếng Trung (phồn thể)";
|
||||||
|
"French" = "Tiếng Pháp";
|
||||||
|
"Spanish" = "Tiếng Tây Ban Nha";
|
||||||
|
"Japanese" = "Tiếng Nhật";
|
||||||
|
"Vietnamese" = "Tiếng Việt";
|
||||||
|
"Advanced" = "Chế độ nâng cao";
|
||||||
|
"AdvancedDesc" = "Nhiều chế độ tùy chỉnh hơn";
|
||||||
|
"AdvancedModeEnabled" = "Advanced mode has been enabled";
|
||||||
|
"AdvancedModeDisabled" = "Advanced mode has been disabled";
|
||||||
|
"AdvancedModeReminder" = "Bạn có muốn kích hoạt Chế độ nâng cao cho YTLite không?\n\nChế độ này cung cấp hơn 50 tùy chọn bổ sung để tùy chỉnh và tối ưu hóa trải nghiệm YouTube của bạn. Bạn có thể Bật/Tắt nó sau từ Cài đặt → %@ → %@ → %@.";
|
||||||
|
"ClearCache" = "Xóa bộ nhớ đệm";
|
||||||
|
"ClearCacheMessage" = "You're about to clear %@ of cache.\n\nDo you want to continue?";
|
||||||
|
"ImportPreferences" = "Import preferences";
|
||||||
|
"PreImportMessage" = "This action will replace the current preferences with those from the selected file.\n\nAre you sure you want to continue?";
|
||||||
|
"ExportPreferences" = "Export preferences";
|
||||||
|
"ResetSettings" = "Đặt lại cài đặt YTLite";
|
||||||
|
"ResetMessage" = "Tùy chọn này sẽ đặt lại cài đặt YTLite về mặc định và đóng YouTube.\n\nBạn có chắc chắn muốn tiếp tục không?";
|
||||||
|
"ShortsOnlyWarning" = "Bạn có chắc chắn muốn kích hoạt chế độ này?\n\nỞ chế độ này, bạn sẽ chỉ có thể xem video Shorts và không thể làm gì khác.\n\nBạn có thể tắt Chế độ chỉ Shorts bằng cách nhấn và giữ bằng hai ngón tay trong trình phát Shorts.";
|
||||||
|
"ShortsModeTurnedOff" = "Chế độ chỉ dành cho Shorts đã bị tắt";
|
||||||
|
"LibraryAdded" = "Tab Thư viện đã được khôi phục";
|
||||||
|
"LibraryRemoved" = "Tab Thư viện đã bị xóa";
|
||||||
|
"Yes" = "Có";
|
||||||
|
"No" = "Không";
|
||||||
|
|
||||||
|
"Select" = "Select";
|
||||||
|
"Default" = "Mặc định";
|
||||||
|
"Best" = "Tốt nhất";
|
||||||
|
"Show" = "Show";
|
||||||
|
"Disable" = "Tắt";
|
||||||
|
"Disabled" = "Đã tắt";
|
||||||
|
"PlaybackSpeed" = "Tốc độ phát";
|
||||||
|
"SpeedPreserved" = "Speed preserved";
|
||||||
|
"ResetSpeed" = "Reset";
|
||||||
|
|
||||||
|
"Brightness" = "Brightness";
|
||||||
|
"Toast.PlaybackSpeed" = "Playback Speed";
|
||||||
|
|
||||||
|
"SelectAction" = "Chọn hành động";
|
||||||
|
"DownloadVideo" = "Download video";
|
||||||
|
"DownloadAudio" = "Download audio";
|
||||||
|
"SaveImage" = "Save image";
|
||||||
|
"CopyInformation" = "Copy information";
|
||||||
|
"CopyChannelName" = "Copy channel name";
|
||||||
|
"CopyTitle" = "Sao chép tiêu đề";
|
||||||
|
"CopyDescription" = "Sao chép mô tả";
|
||||||
|
"CopyTimestampedLink" = "Copy link with timestamp";
|
||||||
|
"PlayInExternalPlayer" = "Play in external player";
|
||||||
|
"PlayInSystemPlayer" = "Play in system player";
|
||||||
|
"PlayInInfuse" = "Play in Infuse";
|
||||||
|
"PlayInVLC" = "Play in VLC";
|
||||||
|
"PlayerNotFound" = "Player not found";
|
||||||
|
"OpenAsRegularVideo" = "Open as regular video";
|
||||||
|
"CopyPostText" = "Sao chép văn bản bài đăng";
|
||||||
|
"SaveCurrentImage" = "Lưu hình ảnh hiện tại";
|
||||||
|
"CopyCurrentImage" = "Sao chép hình ảnh hiện tại";
|
||||||
|
"SavePostAsImage" = "Lưu bài đăng dưới dạng hình ảnh";
|
||||||
|
"CopyPostAsImage" = "Sao chép bài đăng dưới dạng hình ảnh";
|
||||||
|
"CopyCommentText" = "Sao chép văn bản bình luận";
|
||||||
|
"SaveCommentAsImage" = "Lưu bình luận dưới dạng hình ảnh";
|
||||||
|
"CopyCommentAsImage" = "Sao chép bình luận dưới dạng hình ảnh";
|
||||||
|
"SaveProfilePicture" = "Lưu ảnh hồ sơ";
|
||||||
|
"CopyProfilePicture" = "Sao chép ảnh hồ sơ";
|
||||||
|
"DownloadThumbnail" = "Save thumbnail";
|
||||||
|
"CopyThumbnail" = "Copy thumbnail";
|
||||||
|
"Cancel" = "Hủy bỏ";
|
||||||
|
"Cancelled" = "Cancelled";
|
||||||
|
"Copied" = "Sao chép vào clipboard";
|
||||||
|
"Saved" = "Đã lưu vào Ảnh";
|
||||||
|
"Done" = "Xong";
|
||||||
|
"Error" = "Lỗi";
|
||||||
|
"Error.Clipboard" = "Error. Check clipboard for more info";
|
||||||
|
"Error.PathIssue" = "Error. Problem with generating final path. Issue with media title?";
|
||||||
|
"Error.NoSpace" = "Insufficient space on the device.\n\nAt least %@ additional free space is required. Available free space: %@";
|
||||||
|
"Error.Multidownloading" = "Multi-downloading not available yet.";
|
||||||
|
"Error.FailedToImport" = "Failed to import preferences";
|
||||||
|
"DownloadingVideo" = "Downloading video";
|
||||||
|
"DownloadingAudio" = "Downloading audio";
|
||||||
|
"Converting" = "Converting";
|
||||||
|
"RetryLogin" = "Workaround activated.\n\nPlease try again.";
|
||||||
|
"LoginInfo" = "App restart required after successful signing into Google account";
|
||||||
|
|
||||||
|
"Welcome.Download" = "Download Media";
|
||||||
|
"Welcome.DownloadDesc" = "Download your favorite content, whether it's Videos, Shorts, Audio, or Profile photos. Copy interesting posts and comments or save them as images";
|
||||||
|
"Welcome.Content" = "Adjust Interface";
|
||||||
|
"Welcome.ContentDesc" = "Remove unwanted content and interface elements. Enable true OLED dark mode";
|
||||||
|
"Welcome.Player" = "Setup Player Behavior";
|
||||||
|
"Welcome.PlayerDesc" = "Сustomize the player's behavior, auto-select quality and playback speed. Control using gestures";
|
||||||
|
"Welcome.More" = "And even more...";
|
||||||
|
"Welcome.MoreDesc" = "YouTube Plus includes over 50 different options, including features like saving preferences and clearing cache. Settings are available in the YouTube Plus section under YouTube settings";
|
||||||
|
"SupportMe" = "Support me";
|
||||||
|
"Continue" = "Continue";
|
||||||
|
|
||||||
|
"DonationReminder" = "Your support makes YTPlus better... Support through tweak settings";
|
||||||
|
"DontRemind" = "Turn off";
|
||||||
+344
-219
@@ -1,219 +1,344 @@
|
|||||||
"General" = "常规";
|
"Downloading" = "Downloading";
|
||||||
"RemoveAds" = "移除广告";
|
"DownloadManager" = "Download manager";
|
||||||
"RemoveAdsDesc" = "删除程序内的广告。";
|
"DownloadManagerDesc" = "Replaces 'Download' button action under the player with a Download Manager, which allows downloading Video, Audio, Thumbnail Image, and Copying Video Information.\n\nTo download 2K+ videos, enable YTUHD tweak.";
|
||||||
"BackgroundPlayback" = "后台播放";
|
"DownloadManagerYtl" = "Add as YouTube Plus button";
|
||||||
"BackgroundPlaybackDesc" = "启用后台播放。";
|
"DownloadManagerYtlDesc" = "Adds YouTube Plus button for download manager under the player.";
|
||||||
|
"PostManager" = "保存帖子信息";
|
||||||
"Navbar" = "导航栏";
|
"PostManagerDesc" = "允许通过长按复制帖子文本并将帖子另存为图片。";
|
||||||
"RemoveCast" = "隐藏投射按钮";
|
"SaveProfilePhoto" = "保存个人资料图片";
|
||||||
"RemoveCastDesc" = "从导航栏中隐藏投射按钮。";
|
"SaveProfilePhotoDesc" = "长按个人资料图片保存到照片应用程序。";
|
||||||
"RemoveNotifications" = "隐藏通知按钮";
|
"CommentManager" = "保存评论信息";
|
||||||
"RemoveNotificationsDesc" = "从导航栏中隐藏通知按钮。";
|
"CommentManagerDesc" = "允许通过长按复制评论文本并将评论保存为图片。";
|
||||||
"RemoveSearch" = "隐藏搜索按钮";
|
|
||||||
"RemoveSearchDesc" = "从导航栏中隐藏搜索按钮。";
|
"Navbar" = "导航栏";
|
||||||
"RemoveVoiceSearch" = "隐藏语音搜索按钮";
|
"RemoveCast" = "隐藏投射按钮";
|
||||||
"RemoveVoiceSearchDesc" = "从导航栏中隐藏语音搜索按钮。";
|
"RemoveCastDesc" = "从导航栏中隐藏投射按钮。";
|
||||||
"StickyNavbar" = "固定导航栏";
|
"RemoveNotifications" = "隐藏通知按钮";
|
||||||
"StickyNavbarDesc" = "固定导航栏,使其在向下滚动时保持可见。";
|
"RemoveNotificationsDesc" = "从导航栏中隐藏通知按钮。";
|
||||||
"NoSubbar" = "隐藏子栏";
|
"RemoveSearch" = "隐藏搜索按钮";
|
||||||
"NoSubbarDesc" = "隐藏导航栏下的子栏(全部、新内容、实时等)。";
|
"RemoveSearchDesc" = "从导航栏中隐藏搜索按钮。";
|
||||||
"NoYTLogo" = "删除 YouTube Logo";
|
"RemoveVoiceSearch" = "隐藏语音搜索按钮";
|
||||||
"NoYTLogoDesc" = "删除导航栏中的 YouTube Logo。";
|
"RemoveVoiceSearchDesc" = "从导航栏中隐藏语音搜索按钮。";
|
||||||
|
"RemoveSponsorBlock" = "Hide SponsorBlock button";
|
||||||
"Overlay" = "播放界面";
|
"RemoveSponsorBlockDesc" = "Hides SponsorBlock button from the Navigation bar.";
|
||||||
"HideAutoplay" = "隐藏自动播放开关";
|
"StickyNavbar" = "固定导航栏";
|
||||||
"HideAutoplayDesc" = "从播放界面隐藏自动播放开关。";
|
"StickyNavbarDesc" = "固定导航栏,使其在向下滚动时保持可见。";
|
||||||
"HideSubs" = "隐藏字幕按钮";
|
"NoSubbar" = "隐藏子栏";
|
||||||
"HideSubsDesc" = "从播放界面隐藏字幕按钮。";
|
"NoSubbarDesc" = "隐藏导航栏下的子栏(全部、新内容、实时等)。";
|
||||||
"NoHUDMsgs" = "隐藏屏显信息";
|
"NoYTLogo" = "删除 YouTube Logo";
|
||||||
"NoHUDMsgsDesc" = "隐藏播放界面的所有功能信息。示例:CC按钮打开/关闭、视频循环等。";
|
"NoYTLogoDesc" = "删除导航栏中的 YouTube Logo。";
|
||||||
"HidePrevNext" = "隐藏上一个和下一个按钮";
|
"PremiumYTLogo" = "设置 Premium Logo";
|
||||||
"HidePrevNextDesc" = "从播放界面中隐藏上一个和下一个视频按钮。";
|
"PremiumYTLogoDesc" = "在导航栏中设置 Premium Logo。";
|
||||||
"ReplacePrevNext" = "快进和快退按钮";
|
|
||||||
"ReplacePrevNextDesc" = "将上一个和下一个视频按钮替换为快进和快退按钮。";
|
"Feed" = "Feed";
|
||||||
"NoDarkBg" = "删除深色背景";
|
"RemoveAds" = "移除广告";
|
||||||
"NoDarkBgDesc" = "删除播放界面的深色背景。";
|
"RemoveAdsDesc" = "删除程序内的广告。";
|
||||||
"NoEndScreenCards" = "隐藏片尾画面";
|
"HideShorts" = "隐藏短视频";
|
||||||
"NoEndScreenCardsDesc" = "隐藏视频结尾处的片尾屏幕(缩略图)。";
|
"HideShortsDesc" = "从首页、推荐等隐藏短视频(不适用于观看历史记录)。";
|
||||||
"NoFullscreenActions" = "禁用全屏操作";
|
"KeepSubsShorts" = "Keep Shorts in Subscriptions";
|
||||||
"NoFullscreenActionsDesc" = "在全屏模式下禁用操作面板。";
|
"KeepSubsShortsDesc" = "Prevents removing Shorts from Subscriptions tab.";
|
||||||
"PersistentProgressBar" = "持续进度条";
|
"RemoveCommunityPosts" = "Remove community posts";
|
||||||
"PersistentProgressBarDesc" = "始终在播放器中显示进度条。";
|
"RemoveCommunityPostsDesc" = "Removes community posts from the feed.";
|
||||||
"NoRelatedVids" = "没有相关视频";
|
"RemoveMoreTopics" = "Remove \"More topics\"";
|
||||||
"NoRelatedVidsDesc" = "通过向上滑动删除播放界面中显示的相关视频。";
|
"RemoveMoreTopicsDesc" = "Removes \"More topics\" from the feed.";
|
||||||
"NoPromotionCards" = "隐藏付费";
|
"FixAlbums" = "修复封面";
|
||||||
"NoPromotionCardsDesc" = "在付费视频中隐藏“付费内容”。";
|
"FixAlbumsDesc" = "修复来自俄罗斯用户的封面显示问题。";
|
||||||
"NoWatermarks" = "隐藏水印";
|
|
||||||
"NoWatermarksDesc" = "隐藏播放器的频道水印。";
|
"Player" = "播放器";
|
||||||
|
"Player.Overlay" = "播放界面";
|
||||||
"Player" = "播放器";
|
"SpeedControls" = "Speed controls";
|
||||||
"Miniplayer" = "启用迷你播放器";
|
"SpeedControlsDesc" = "Shows speed control buttons on overlay";
|
||||||
"MiniplayerDesc" = "启用迷你播放器来播放最初不是为其设计的视频,例如针对儿童的视频。";
|
"HideAutoplay" = "隐藏自动播放开关";
|
||||||
"PortraitFullscreen" = "竖屏全屏模式";
|
"HideAutoplayDesc" = "从播放界面隐藏自动播放开关。";
|
||||||
"PortraitFullscreenDesc" = "启用竖屏全屏模式支持。";
|
"HideSubs" = "隐藏字幕按钮";
|
||||||
"CopyWithTimestamp" = "复制带时间戳的链接";
|
"HideSubsDesc" = "从播放界面隐藏字幕按钮。";
|
||||||
"CopyWithTimestampDesc" = "允许通过按下暂停按钮将带有时间戳的链接复制到剪贴板。";
|
"HidePrevNext" = "隐藏上一个和下一个按钮";
|
||||||
"DisableAutoplay" = "禁用自动播放视频";
|
"HidePrevNextDesc" = "从播放界面中隐藏上一个和下一个视频按钮。";
|
||||||
"DisableAutoplayDesc" = "打开后防止视频自动播放。";
|
"ReplacePrevNext" = "快进和快退按钮";
|
||||||
"DisableAutoCaptions" = "禁用自动字幕";
|
"ReplacePrevNextDesc" = "将上一个和下一个视频按钮替换为快进和快退按钮。";
|
||||||
"DisableAutoCaptionsDesc" = "防止自动激活字幕。";
|
"NoDarkBg" = "删除深色背景";
|
||||||
"NoContentWarning" = "跳过内容警告";
|
"NoDarkBgDesc" = "删除播放界面的深色背景。";
|
||||||
"NoContentWarningDesc" = "跳过敏感内容警告消息。";
|
"NoEndScreenCards" = "隐藏片尾画面";
|
||||||
"ClassicQuality" = "经典视频质量";
|
"NoEndScreenCardsDesc" = "隐藏视频结尾处的片尾屏幕(缩略图)。";
|
||||||
"ClassicQualityDesc" = "加回经典的视频质量选择菜单。";
|
"NoAutonavEndScreenCards" = "Hide auto-play end screen";
|
||||||
"ExtraSpeedOptions" = "扩展速度选项";
|
"NoAutonavEndScreenCardsDesc" = "Hides the screen that shows what you can play next after playback ended. Disabling this option also disables auto-play";
|
||||||
"ExtraSpeedOptionsDesc" = "在播放器菜单中添加更多视频播放速度的选项。";
|
"NoFullscreenActions" = "禁用全屏操作";
|
||||||
"DontSnap2Chapter" = "禁用双击跳转";
|
"NoFullscreenActionsDesc" = "在全屏模式下禁用操作面板。";
|
||||||
"DontSnap2ChapterDesc" = "禁用通过双击手势跳到下一集。";
|
"PersistentProgressBar" = "持续进度条";
|
||||||
"RedProgressBar" = "红色进度条";
|
"PersistentProgressBarDesc" = "始终在播放器中显示进度条。";
|
||||||
"RedProgressBarDesc" = "加回红色进度条。";
|
"StockVolumeHUD" = "原生音量 HUD";
|
||||||
"NoHints" = "禁用提示";
|
"StockVolumeHUDDesc" = "全屏显示系统音量 HUD。";
|
||||||
"NoHintsDesc" = "禁用播放期间出现在右上角的作者提示。";
|
"NoRelatedVids" = "没有相关视频";
|
||||||
"NoFreeZoom" = "禁用自由缩放手势";
|
"NoRelatedVidsDesc" = "通过向上滑动删除播放界面中显示的相关视频。";
|
||||||
"NoFreeZoomDesc" = "禁用新的自由缩放手势。";
|
"NoPromotionCards" = "隐藏付费";
|
||||||
"AutoFullscreen" = "全屏模式";
|
"NoPromotionCardsDesc" = "在付费视频中隐藏“付费内容”。";
|
||||||
"AutoFullscreenDesc" = "自动以全屏模式播放视频。";
|
"NoWatermarks" = "隐藏水印";
|
||||||
"ExitFullscreen" = "完成后退出全屏模式";
|
"NoWatermarksDesc" = "隐藏播放器的频道水印。";
|
||||||
"ExitFullscreenDesc" = "在视频播放结束时退出全屏模式。";
|
"VideoEndTime" = "显示播放结束时间";
|
||||||
"NoDoubleTap2Seek" = "禁用双击搜索";
|
"VideoEndTimeDesc" = "将视频播放结束时间添加到播放器栏。";
|
||||||
"NoDoubleTap2SeekDesc" = "禁用双击搜索手势。";
|
"24hrFormat" = "24 小时格式";
|
||||||
|
"24hrFormatDesc" = "以 24 小时格式显示结束时间。";
|
||||||
"Tabbar" = "选项卡栏";
|
|
||||||
"RemoveLabels" = "移除标签";
|
"Player.Interface" = "Interface";
|
||||||
"RemoveLabelsDesc" = "删除选项卡标签。";
|
"PortraitFullscreen" = "竖屏全屏模式";
|
||||||
"RemoveIndicators" = "删除指示器";
|
"PortraitFullscreenDesc" = "启用竖屏全屏模式支持。";
|
||||||
"RemoveIndicatorsDesc" = "删除选项卡“红点”指示。";
|
"ClassicQuality" = "经典视频质量";
|
||||||
"ReExplore" = "“短视频”替换为“探索”";
|
"ClassicQualityDesc" = "加回经典的视频质量选择菜单。";
|
||||||
"ReExploreDesc" = "在旧版本 YouTube 中将“短视频”选项卡替换为“探索”。";
|
"ExtraSpeedOptions" = "扩展速度选项";
|
||||||
"AddExplore" = "添加“探索”选项卡";
|
"ExtraSpeedOptionsDesc" = "在播放器菜单中添加更多视频播放速度的选项。";
|
||||||
"AddExploreDesc" = "将“探索”选项卡添加到底部选项卡栏。";
|
"RedProgressBar" = "红色进度条";
|
||||||
"HideShortsTab" = "隐藏短视频";
|
"RedProgressBarDesc" = "加回红色进度条。";
|
||||||
"HideShortsTabDesc" = "从选项卡栏中隐藏短视频。";
|
"NoPlayerRemixButton" = "移除混剪按钮";
|
||||||
"HideSubscriptionsTab" = "隐藏订阅内容";
|
"NoPlayerRemixButtonDesc" = "移除播放器下方的混剪按钮。";
|
||||||
"HideSubscriptionsTabDesc" = "从选项卡栏中隐藏订阅内容。";
|
"NoPlayerClipButton" = "移除剪辑按钮";
|
||||||
"HideUploadButton" = "隐藏上传按钮";
|
"NoPlayerClipButtonDesc" = "移除播放器下方的剪辑按钮。";
|
||||||
"HideUploadButtonDesc" = "从选项卡栏中隐藏上传按钮。";
|
"NoPlayerDownloadButton" = "移除下载按钮";
|
||||||
"HideLibraryTab" = "隐藏媒体库";
|
"NoPlayerDownloadButtonDesc" = "移除播放器下方的下载按钮。";
|
||||||
"HideLibraryTabDesc" = "从选项卡栏中隐藏媒体库。";
|
|
||||||
|
"Player.Actions" = "Actions";
|
||||||
"Shorts" = "短视频";
|
"BackgroundPlayback" = "后台播放";
|
||||||
"ShortsOnlyMode" = "仅短视频模式";
|
"BackgroundPlaybackDesc" = "启用后台播放。";
|
||||||
"ShortsOnlyModeDesc" = "将 YouTube 功能限制为只能观看短视频。";
|
"Miniplayer" = "启用迷你播放器";
|
||||||
"HideShorts" = "隐藏短视频";
|
"MiniplayerDesc" = "启用迷你播放器来播放最初不是为其设计的视频,例如针对儿童的视频。";
|
||||||
"HideShortsDesc" = "从首页、推荐等隐藏短视频(不适用于观看历史记录)。";
|
"DisableAutoplay" = "禁用自动播放视频";
|
||||||
"ShortsProgress" = "启用进度条";
|
"DisableAutoplayDesc" = "打开后防止视频自动播放。";
|
||||||
"ShortsProgressDesc" = "在短视频播放器中显示进度条。";
|
"DisableAutoCaptions" = "禁用自动字幕";
|
||||||
"PinchToFullscreenShorts" = "捏合至全屏";
|
"DisableAutoCaptionsDesc" = "防止自动激活字幕。";
|
||||||
"PinchToFullscreenShortsDesc" = "通过捏合和捏合手势管理播放界面,以全屏模式显示短视频。";
|
"NoContentWarning" = "跳过内容警告";
|
||||||
"ShortsToRegular" = "常规短视频";
|
"NoContentWarningDesc" = "跳过敏感内容警告消息。";
|
||||||
"ShortsToRegularDesc" = "像打开普通视频一样打开短视频。";
|
"AutoFullscreen" = "全屏模式";
|
||||||
"ResumeShorts" = "不要从短视频开始";
|
"AutoFullscreenDesc" = "自动以全屏模式播放视频。";
|
||||||
"ResumeShortsDesc" = "防止在打开应用程序时首先启动短视频,如果在观看短视频时关闭,就会发生这种情况。";
|
"ExitFullscreen" = "完成后退出全屏模式";
|
||||||
"HideShortsLogo" = "隐藏短视频Logo";
|
"ExitFullscreenDesc" = "在视频播放结束时退出全屏模式。";
|
||||||
"HideShortsLogoDesc" = "隐藏左上角的短视频Logo。";
|
|
||||||
"HideShortsSearch" = "隐藏搜索按钮";
|
"Player.Gestures" = "Gestures";
|
||||||
"HideShortsSearchDesc" = "从短视频播放器中隐藏搜索按钮。";
|
"AdjustWithFinger" = "Adjust speed by gestures";
|
||||||
"HideShortsCamera" = "隐藏相机按钮";
|
"AdjustWithFingerDesc" = "Allows adjusting playback speed by long press on player and moving finger up and down";
|
||||||
"HideShortsCameraDesc" = "从短视频播放器中隐藏相机按钮。";
|
"PreserveSpeed" = "Preserve Speed";
|
||||||
"HideShortsMore" = "隐藏更多 (⋮) 按钮";
|
"PreserveSpeedDesc" = "Preserves adjusted speed after gesture completion";
|
||||||
"HideShortsMoreDesc" = "从短视频播放器中隐藏更多 (⋮) 按钮 。也可以通过长按屏幕来访问它。";
|
"TwoFingerTapToPause" = "Pause using two fingers";
|
||||||
"HideShortsSubscriptions" = "隐藏订阅按钮";
|
"TwoFingerTapToPauseDesc" = "Pause/Resume playback by tapping on the screen using two fingers.";
|
||||||
"HideShortsSubscriptionsDesc" = "隐藏短视频暂停时显示的订阅按钮。";
|
"TwoFingerPanToBrightness" = "Adjust brightness";
|
||||||
"HideShortsLike" = "隐藏喜欢按钮";
|
"TwoFingerPanToBrightnessDesc" = "Allows adjusting screen brigthness by sliding up/down using two fingers.";
|
||||||
"HideShortsLikeDesc" = "从短视频播放器中隐藏喜欢按钮。";
|
"PauseOnOverlay" = "覆盖时暂停";
|
||||||
"HideShortsDislike" = "隐藏不喜欢按钮";
|
"PauseOnOverlayDesc" = "当播放器控制按钮出现时暂停播放。";
|
||||||
"HideShortsDislikeDesc" = "从短视频播放器中隐藏不喜欢按钮。";
|
"CopyWithTimestamp" = "复制带时间戳的链接";
|
||||||
"HideShortsComments" = "隐藏评论按钮";
|
"CopyWithTimestampDesc" = "允许通过按下暂停按钮将带有时间戳的链接复制到剪贴板。";
|
||||||
"HideShortsCommentsDesc" = "从短视频播放器中隐藏评论按钮。";
|
"DontSnap2Chapter" = "禁用双击跳转";
|
||||||
"HideShortsRemix" = "隐藏混剪按钮";
|
"DontSnap2ChapterDesc" = "禁用通过双击手势跳到下一集。";
|
||||||
"HideShortsRemixDesc" = "从短视频播放器中隐藏混剪按钮。";
|
"NoTwoFingerSnapToChapter" = "禁用双指双击";
|
||||||
"HideShortsShare" = "隐藏分享按钮";
|
"NoTwoFingerSnapToChapterDesc" = "禁用双指双击捕捉手势。";
|
||||||
"HideShortsShareDesc" = "从短视频播放器中隐藏分享按钮。";
|
"NoFreeZoom" = "禁用自由缩放手势";
|
||||||
"HideShortsAvatars" = "隐藏发布者头像";
|
"NoFreeZoomDesc" = "禁用新的自由缩放手势。";
|
||||||
"HideShortsAvatarsDesc" = "隐藏右下角的发布者个人资料头像。";
|
"NoHints" = "禁用提示";
|
||||||
"HideShortsThanks" = "隐藏捐赠按钮";
|
"NoHintsDesc" = "禁用播放期间出现在右上角的作者提示。";
|
||||||
"HideShortsThanksDesc" = "从短视频播放器中隐藏捐赠按钮。";
|
"NoDoubleTap2Seek" = "禁用双击搜索";
|
||||||
"HideShortsSource" = "隐藏短视频来源";
|
"NoDoubleTap2SeekDesc" = "禁用双击搜索手势。";
|
||||||
"HideShortsSourceDesc" = "在频道名称下隐藏短视频来源。";
|
|
||||||
"HideShortsChannelName" = "隐藏发布者名称";
|
"Shorts" = "短视频";
|
||||||
"HideShortsChannelNameDesc" = "从短视频播放器中隐藏发布者名称和订阅按钮。";
|
"ShortsOnlyMode" = "仅短视频模式";
|
||||||
"HideShortsDescription" = "隐藏文案";
|
"ShortsOnlyModeDesc" = "将 YouTube 功能限制为只能观看短视频。";
|
||||||
"HideShortsDescriptionDesc" = "隐藏短视频下方的视频文案。";
|
"AutoSkipShorts" = "自动跳过短视频";
|
||||||
"HideShortsAudioTrack" = "隐藏音轨";
|
"AutoSkipShortsDesc" = "当前视频播放结束后跳转至下一个视频。";
|
||||||
"HideShortsAudioTrackDesc" = "隐藏短视频文案下方的音轨。";
|
"ShortsProgress" = "启用进度条";
|
||||||
|
"ShortsProgressDesc" = "在短视频播放器中显示进度条。";
|
||||||
"Other" = "其他";
|
"SpeedByLongTap" = "Increase Shorts playback rate";
|
||||||
"CopyVideoInfo" = "复制视频信息";
|
"SpeedByLongTapDesc" = "Allows to speed up playback by long pressing on a certain part of the screen.";
|
||||||
"CopyVideoInfoDesc" = "添加按钮从“视频说明”面板中复制视频的标题和描述。";
|
"SpeedLocation" = "Activation location";
|
||||||
"PostManager" = "保存帖子信息";
|
"LeftSide" = "Left side";
|
||||||
"PostManagerDesc" = "允许通过长按复制帖子文本并将帖子另存为图片。";
|
"RightSide" = "Right side";
|
||||||
"SavePostImage" = "保存社区帖子图片";
|
"PinchToFullscreenShorts" = "捏合至全屏";
|
||||||
"SavePostImageDesc" = "长按社区帖子图片保存到照片应用程序。";
|
"PinchToFullscreenShortsDesc" = "通过捏合和捏合手势管理播放界面,以全屏模式显示短视频。";
|
||||||
"SaveProfilePhoto" = "保存个人资料图片";
|
"ShortsToRegular" = "常规短视频";
|
||||||
"SaveProfilePhotoDesc" = "长按个人资料图片保存到照片应用程序。";
|
"ShortsToRegularDesc" = "像打开普通视频一样打开短视频。";
|
||||||
"CommentManager" = "Save comment information";
|
"HideShortsLogo" = "隐藏短视频Logo";
|
||||||
"CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
|
"HideShortsLogoDesc" = "隐藏左上角的短视频Logo。";
|
||||||
"FixAlbums" = "修复封面";
|
"HideShortsSearch" = "隐藏搜索按钮";
|
||||||
"FixAlbumsDesc" = "修复来自俄罗斯用户的封面显示问题。";
|
"HideShortsSearchDesc" = "从短视频播放器中隐藏搜索按钮。";
|
||||||
"RemovePlayNext" = "删除“播放队列中的下一个”";
|
"HideShortsCamera" = "隐藏相机按钮";
|
||||||
"RemovePlayNextDesc" = "从菜单中删除“播放队列中的下一个”选项。";
|
"HideShortsCameraDesc" = "从短视频播放器中隐藏相机按钮。";
|
||||||
"NoContinueWatching" = "删除“继续观看”";
|
"HideShortsMore" = "隐藏更多 (⋮) 按钮";
|
||||||
"NoContinueWatchingDesc" = "从首页中删除包含未完成视频的“继续观看”部分。";
|
"HideShortsMoreDesc" = "从短视频播放器中隐藏更多 (⋮) 按钮 。也可以通过长按屏幕来访问它。";
|
||||||
"NoSearchHistory" = "隐藏搜索历史记录";
|
"HideShortsSubscriptions" = "隐藏订阅按钮";
|
||||||
"NoSearchHistoryDesc" = "直观地隐藏搜索历史记录和建议。注意:搜索历史记录仍然可以在其他YouTube客户端中访问。";
|
"HideShortsSubscriptionsDesc" = "隐藏短视频暂停时显示的订阅按钮。";
|
||||||
"NoRelatedWatchNexts" = "隐藏播放器下的所有视频";
|
|
||||||
"NoRelatedWatchNextsDesc" = "隐藏播放器下方的所有视频,仅保留视频信息和评论部分。";
|
"Tabbar" = "选项卡栏";
|
||||||
"StickSortComments" = "固定评论排序";
|
"RemoveLabels" = "移除标签";
|
||||||
"StickSortCommentsDesc" = "固定评论顶部排序功能按钮(热门、时间),滚动时不会消失。";
|
"RemoveLabelsDesc" = "删除选项卡标签。";
|
||||||
"HideSortComments" = "隐藏评论排序";
|
"RemoveIndicators" = "删除指示器";
|
||||||
"HideSortCommentsDesc" = "隐藏评论排序功能,使它永远不会出现。";
|
"RemoveIndicatorsDesc" = "删除选项卡“红点”指示。";
|
||||||
"PlaylistOldMinibar" = "旧播放列表";
|
"ReExplore" = "“短视频”替换为“探索”";
|
||||||
"PlaylistOldMinibarDesc" = "将新的浮动播放列表面板替换为旧的浮动播放列表面板。";
|
"ReExploreDesc" = "在旧版本 YouTube 中将“短视频”选项卡替换为“探索”。";
|
||||||
"DisableRTL" = "禁用 RTL 格式";
|
"AddExplore" = "添加“探索”选项卡";
|
||||||
"DisableRTLDesc" = "对于最初以从右到左 (RTL) 显示的语言,强制以从左到右 (LTR) 格式显示文本。";
|
"AddExploreDesc" = "将“探索”选项卡添加到底部选项卡栏。";
|
||||||
|
"HideShortsTab" = "隐藏短视频";
|
||||||
"Startup" = "启动页";
|
"HideShortsTabDesc" = "从选项卡栏中隐藏短视频。";
|
||||||
"Home" = "首页";
|
"HideSubscriptionsTab" = "隐藏订阅内容";
|
||||||
"Explore" = "探索";
|
"HideSubscriptionsTabDesc" = "从选项卡栏中隐藏订阅内容。";
|
||||||
"ShortsTab" = "短视频";
|
"HideUploadButton" = "隐藏上传按钮";
|
||||||
"Subscriptions" = "订阅";
|
"HideUploadButtonDesc" = "从选项卡栏中隐藏上传按钮。";
|
||||||
"Library" = "媒体库";
|
"HideLibraryTab" = "隐藏媒体库";
|
||||||
"Warning" = "警告";
|
"HideLibraryTabDesc" = "Hides Library tab from the Tab bar.\n\nThis tab can be restored by long pressing Home tab.";
|
||||||
"TabIsHidden" = "无法选择隐藏选项卡作为启动页。";
|
|
||||||
|
"Interface" = "Interface";
|
||||||
"DonateViaPayPal" = "PayPal 赞助";
|
"OledTheme" = "Oled theme";
|
||||||
"SupportViaGhSponsors" = "通过 Github 赞助支持开发";
|
"OledThemeDesc" = "Turns all dark colors to black";
|
||||||
"Version" = "版本";
|
"NativeShare" = "原生共享表";
|
||||||
"About" = "关于";
|
"NativeShareDesc" = "使用系统共享表共享媒体。";
|
||||||
"Credits" = "信息";
|
"RemoveInlineComment" = "Remove inline comment";
|
||||||
"Developer" = "YTLite开发者";
|
"RemoveInlineCommentDesc" = "Removes comment section under the player.";
|
||||||
"ChineseSimplified" = "中文(简体)本地化";
|
"RemovePlayNext" = "删除“播放队列中的下一个”";
|
||||||
"ChineseTraditional" = "中文(繁体)本地化";
|
"RemovePlayNextDesc" = "从菜单中删除“播放队列中的下一个”选项。";
|
||||||
"French" = "法语本地化";
|
"RemoveDownloadMenu" = "删除“下载”";
|
||||||
"Spanish" = "西班牙语本地化";
|
"RemoveDownloadMenuDesc" = "从菜单中删除“下载”选项。";
|
||||||
"Japanese" = "日语本地化";
|
"RemoveWatchLaterMenu" = "删除“保存到稍后观看”";
|
||||||
"Vietnamese" = "越南语本地化";
|
"RemoveWatchLaterMenuDesc" = "从菜单中删除“保存到稍后观看”选项。";
|
||||||
"Advanced" = "高级模式";
|
"RemoveSaveToPlaylistMenu" = "删除“保存到播放列表”";
|
||||||
"AdvancedModeReminder" = "想为YTLite激活高级模式吗?\n\n此模式提供了50多个额外的选项来自定义和优化您的YouTube体验。\n可以稍后从设置中启用/禁用它 → %@ → %@ → %@。";
|
"RemoveSaveToPlaylistMenuDesc" = "从菜单中删除“保存到播放列表”选项。";
|
||||||
"ClearCache" = "清除缓存";
|
"RemoveShareMenu" = "删除“分享”";
|
||||||
"ResetSettings" = "重置YTLite设置";
|
"RemoveShareMenuDesc" = "从菜单中删除“分享”选项。";
|
||||||
"ResetMessage" = "此选项会将YTLite设置重置为默认值并关闭YouTube。\n\n确定要继续吗?";
|
"RemoveNotInterestedMenu" = "删除“不感兴趣”";
|
||||||
"ShortsOnlyWarning" = "确定要激活此模式吗?\n\n在此模式下,将只能观看短视频,且无法执行任何其他操作。\n\n可以通过双指长按禁用“仅短视频模式”。";
|
"RemoveNotInterestedMenuDesc" = "从菜单中删除“不感兴趣”选项。";
|
||||||
"ShortsModeTurnedOff" = "仅短视频模式已关闭";
|
"RemoveDontRecommendMenu" = "删除“不推荐此频道”";
|
||||||
"Yes" = "是";
|
"RemoveDontRecommendMenuDesc" = "从菜单中删除“不推荐此频道”选项。";
|
||||||
"No" = "不";
|
"RemoveReportMenu" = "删除“举报”";
|
||||||
|
"RemoveReportMenuDesc" = "从菜单中删除“举报”选项。";
|
||||||
"SelectAction" = "选择操作";
|
"NoContinueWatching" = "删除“继续观看”";
|
||||||
"CopyTitle" = "复制标题";
|
"NoContinueWatchingDesc" = "从首页中删除包含未完成视频的“继续观看”部分。";
|
||||||
"CopyDescription" = "复制描述";
|
"NoSearchHistory" = "隐藏搜索历史记录";
|
||||||
"CopyPostText" = "复制帖子文本";
|
"NoSearchHistoryDesc" = "直观地隐藏搜索历史记录和建议。注意:搜索历史记录仍然可以在其他YouTube客户端中访问。";
|
||||||
"SavePostAsImage" = "帖子另存为图片";
|
"NoRelatedWatchNexts" = "隐藏播放器下的所有视频";
|
||||||
"CopyPostAsImage" = "帖子作为图片复制";
|
"NoRelatedWatchNextsDesc" = "隐藏播放器下方的所有视频,仅保留视频信息和评论部分。";
|
||||||
"CopyCommentText" = "Copy comment text";
|
"StickSortComments" = "固定评论排序";
|
||||||
"SaveCommentAsImage" = "Save comment as image";
|
"StickSortCommentsDesc" = "固定评论顶部排序功能按钮(热门、时间),滚动时不会消失。";
|
||||||
"CopyCommentAsImage" = "Copy comment as image";
|
"HideSortComments" = "隐藏评论排序";
|
||||||
"Cancel" = "取消";
|
"HideSortCommentsDesc" = "隐藏评论排序功能,使它永远不会出现。";
|
||||||
"Copied" = "已复制到剪贴板";
|
"PlaylistOldMinibar" = "旧播放列表";
|
||||||
"Saved" = "已保存到照片";
|
"PlaylistOldMinibarDesc" = "将新的浮动播放列表面板替换为旧的浮动播放列表面板。";
|
||||||
"Done" = "完成";
|
"StartupAnimation" = "Startup animation";
|
||||||
"Error" = "错误";
|
"StartupAnimationDesc" = "Displays YouTube startup loading animation";
|
||||||
|
"OldYTUI" = "Old UI";
|
||||||
|
"OldYTUIDesc" = "Spoofs YouTube version so that it will return old interface";
|
||||||
|
"DisableRTL" = "禁用 RTL 格式";
|
||||||
|
"DisableRTLDesc" = "对于最初以从右到左(RTL)显示的语言,强制以从左到右(LTR)格式显示文本。";
|
||||||
|
|
||||||
|
"HoldToSpeed" = "长按变更速度";
|
||||||
|
"DefaultPlaybackRate" = "默认播放速率";
|
||||||
|
"PlaybackQualityOnWiFi" = "WiFi网络播放质量";
|
||||||
|
"PlaybackQualityOnCellular" = "蜂窝网络播放质量";
|
||||||
|
|
||||||
|
"Startup" = "启动页";
|
||||||
|
"Home" = "首页";
|
||||||
|
"Explore" = "探索";
|
||||||
|
"ShortsTab" = "短视频";
|
||||||
|
"Subscriptions" = "订阅";
|
||||||
|
"Library" = "媒体库";
|
||||||
|
"Warning" = "警告";
|
||||||
|
"TabIsHidden" = "无法选择隐藏选项卡作为启动页。";
|
||||||
|
|
||||||
|
"SupportDevelopment" = "支持开发";
|
||||||
|
"SupportDevelopmentDesc" = "如果您喜欢YTLite并愿意支持其开发,可以使用以下任何便捷的方式来赞助。\n感谢❤";
|
||||||
|
"Contributors" = "贡献者";
|
||||||
|
"OpenSourceLibs" = "开源库";
|
||||||
|
"Preferences" = "%@ preferences";
|
||||||
|
"Version" = "版本";
|
||||||
|
"About" = "关于";
|
||||||
|
"Credits" = "信息";
|
||||||
|
"Developer" = "YTLite开发者";
|
||||||
|
"SpecialThanks" = "特别感谢";
|
||||||
|
"SpecialThanks.Test" = "Invaluable contribution to tweak testing";
|
||||||
|
"ChineseSimplified" = "中文(简体)本地化";
|
||||||
|
"ChineseTraditional" = "中文(繁体)本地化";
|
||||||
|
"French" = "法语本地化";
|
||||||
|
"Spanish" = "西班牙语本地化";
|
||||||
|
"Japanese" = "日语本地化";
|
||||||
|
"Vietnamese" = "越南语本地化";
|
||||||
|
"Advanced" = "高级模式";
|
||||||
|
"AdvancedDesc" = "更多自定义的功能";
|
||||||
|
"AdvancedModeEnabled" = "Advanced mode has been enabled";
|
||||||
|
"AdvancedModeDisabled" = "Advanced mode has been disabled";
|
||||||
|
"AdvancedModeReminder" = "想为YTLite激活高级模式吗?\n\n此模式提供了50多个额外的选项来自定义和优化您的YouTube体验。\n可以稍后从设置中启用/禁用它 → %@ → %@ → %@。";
|
||||||
|
"ClearCache" = "清除缓存";
|
||||||
|
"ClearCacheMessage" = "You're about to clear %@ of cache.\n\nDo you want to continue?";
|
||||||
|
"ImportPreferences" = "Import preferences";
|
||||||
|
"PreImportMessage" = "This action will replace the current preferences with those from the selected file.\n\nAre you sure you want to continue?";
|
||||||
|
"ExportPreferences" = "Export preferences";
|
||||||
|
"ResetSettings" = "重置YTLite设置";
|
||||||
|
"ResetMessage" = "此选项会将YTLite设置重置为默认值并关闭YouTube。\n\n确定要继续吗?";
|
||||||
|
"ShortsOnlyWarning" = "确定要激活此模式吗?\n\n在此模式下,将只能观看短视频,且无法执行任何其他操作。\n\n可以通过双指长按禁用“仅短视频模式”。";
|
||||||
|
"ShortsModeTurnedOff" = "仅短视频模式已关闭";
|
||||||
|
"LibraryAdded" = "“我/媒体库”选项卡已恢复";
|
||||||
|
"LibraryRemoved" = "“我/媒体库”选项卡已删除";
|
||||||
|
"Yes" = "是";
|
||||||
|
"No" = "不";
|
||||||
|
|
||||||
|
"Select" = "Select";
|
||||||
|
"Default" = "默认";
|
||||||
|
"Best" = "最好";
|
||||||
|
"Show" = "Show";
|
||||||
|
"Disable" = "禁用";
|
||||||
|
"Disabled" = "已禁用";
|
||||||
|
"PlaybackSpeed" = "播放速度";
|
||||||
|
"SpeedPreserved" = "Speed preserved";
|
||||||
|
"ResetSpeed" = "Reset";
|
||||||
|
|
||||||
|
"Brightness" = "Brightness";
|
||||||
|
"Toast.PlaybackSpeed" = "Playback Speed";
|
||||||
|
|
||||||
|
"SelectAction" = "选择操作";
|
||||||
|
"DownloadVideo" = "Download video";
|
||||||
|
"DownloadAudio" = "Download audio";
|
||||||
|
"SaveImage" = "Save image";
|
||||||
|
"CopyInformation" = "Copy information";
|
||||||
|
"CopyChannelName" = "Copy channel name";
|
||||||
|
"CopyTitle" = "复制标题";
|
||||||
|
"CopyDescription" = "复制描述";
|
||||||
|
"CopyTimestampedLink" = "Copy link with timestamp";
|
||||||
|
"PlayInExternalPlayer" = "Play in external player";
|
||||||
|
"PlayInSystemPlayer" = "Play in system player";
|
||||||
|
"PlayInInfuse" = "Play in Infuse";
|
||||||
|
"PlayInVLC" = "Play in VLC";
|
||||||
|
"PlayerNotFound" = "Player not found";
|
||||||
|
"OpenAsRegularVideo" = "Open as regular video";
|
||||||
|
"CopyPostText" = "复制帖子文本";
|
||||||
|
"SaveCurrentImage" = "保存当前图片";
|
||||||
|
"CopyCurrentImage" = "复制当前图片";
|
||||||
|
"SavePostAsImage" = "帖子另存为图片";
|
||||||
|
"CopyPostAsImage" = "帖子作为图片复制";
|
||||||
|
"CopyCommentText" = "复制评论文本";
|
||||||
|
"SaveCommentAsImage" = "评论另存为图片";
|
||||||
|
"CopyCommentAsImage" = "评论作为图片复制";
|
||||||
|
"SaveProfilePicture" = "保存个人资料图片";
|
||||||
|
"CopyProfilePicture" = "复制个人资料图片";
|
||||||
|
"DownloadThumbnail" = "Save thumbnail";
|
||||||
|
"CopyThumbnail" = "Copy thumbnail";
|
||||||
|
"Cancel" = "取消";
|
||||||
|
"Cancelled" = "Cancelled";
|
||||||
|
"Copied" = "已复制到剪贴板";
|
||||||
|
"Saved" = "已保存到照片";
|
||||||
|
"Done" = "完成";
|
||||||
|
"Error" = "错误";
|
||||||
|
"Error.Clipboard" = "Error. Check clipboard for more info";
|
||||||
|
"Error.PathIssue" = "Error. Problem with generating final path. Issue with media title?";
|
||||||
|
"Error.NoSpace" = "Insufficient space on the device.\n\nAt least %@ additional free space is required. Available free space: %@";
|
||||||
|
"Error.Multidownloading" = "Multi-downloading not available yet.";
|
||||||
|
"Error.FailedToImport" = "Failed to import preferences";
|
||||||
|
"DownloadingVideo" = "Downloading video";
|
||||||
|
"DownloadingAudio" = "Downloading audio";
|
||||||
|
"Converting" = "Converting";
|
||||||
|
"RetryLogin" = "Workaround activated.\n\nPlease try again.";
|
||||||
|
"LoginInfo" = "App restart required after successful signing into Google account";
|
||||||
|
|
||||||
|
"Welcome.Download" = "Download Media";
|
||||||
|
"Welcome.DownloadDesc" = "Download your favorite content, whether it's Videos, Shorts, Audio, or Profile photos. Copy interesting posts and comments or save them as images";
|
||||||
|
"Welcome.Content" = "Adjust Interface";
|
||||||
|
"Welcome.ContentDesc" = "Remove unwanted content and interface elements. Enable true OLED dark mode";
|
||||||
|
"Welcome.Player" = "Setup Player Behavior";
|
||||||
|
"Welcome.PlayerDesc" = "Сustomize the player's behavior, auto-select quality and playback speed. Control using gestures";
|
||||||
|
"Welcome.More" = "And even more...";
|
||||||
|
"Welcome.MoreDesc" = "YouTube Plus includes over 50 different options, including features like saving preferences and clearing cache. Settings are available in the YouTube Plus section under YouTube settings";
|
||||||
|
"SupportMe" = "Support me";
|
||||||
|
"Continue" = "Continue";
|
||||||
|
|
||||||
|
"DonationReminder" = "Your support makes YTPlus better... Support through tweak settings";
|
||||||
|
"DontRemind" = "Turn off";
|
||||||
+344
-219
@@ -1,219 +1,344 @@
|
|||||||
"General" = "一般功能";
|
"Downloading" = "Downloading";
|
||||||
"RemoveAds" = "移除廣告";
|
"DownloadManager" = "Download manager";
|
||||||
"RemoveAdsDesc" = "移除應用程式內的廣告";
|
"DownloadManagerDesc" = "Replaces 'Download' button action under the player with a Download Manager, which allows downloading Video, Audio, Thumbnail Image, and Copying Video Information.\n\nTo download 2K+ videos, enable YTUHD tweak.";
|
||||||
"BackgroundPlayback" = "背景播放";
|
"DownloadManagerYtl" = "Add as YouTube Plus button";
|
||||||
"BackgroundPlaybackDesc" = "啟用背景播放";
|
"DownloadManagerYtlDesc" = "Adds YouTube Plus button for download manager under the player.";
|
||||||
|
"PostManager" = "儲存貼文資訊";
|
||||||
"Navbar" = "頂部導覽列";
|
"PostManagerDesc" = "長按可以複製貼文內容或將貼文儲存為圖片";
|
||||||
"RemoveCast" = "隱藏投放按鈕";
|
"SaveProfilePhoto" = "儲存個人檔案照片";
|
||||||
"RemoveCastDesc" = "從導覽列隱藏投放按鈕";
|
"SaveProfilePhotoDesc" = "長按個人檔案照片儲存到照片應用";
|
||||||
"RemoveNotifications" = "隱藏通知按鈕";
|
"CommentManager" = "儲存留言資訊";
|
||||||
"RemoveNotificationsDesc" = "從導覽列隱藏通知按鈕";
|
"CommentManagerDesc" = "長按可以複製留言內容或將留言儲存為圖片";
|
||||||
"RemoveSearch" = "隱藏搜尋按鈕";
|
|
||||||
"RemoveSearchDesc" = "從導覽列隱藏搜尋按鈕";
|
"Navbar" = "頂部導覽列";
|
||||||
"RemoveVoiceSearch" = "隱藏語音搜尋按鈕";
|
"RemoveCast" = "隱藏投放按鈕";
|
||||||
"RemoveVoiceSearchDesc" = "從導覽列隱藏語音搜尋按鈕";
|
"RemoveCastDesc" = "從導覽列隱藏投放按鈕";
|
||||||
"StickyNavbar" = "固定導覽列";
|
"RemoveNotifications" = "隱藏通知按鈕";
|
||||||
"StickyNavbarDesc" = "向下滑動時保持可見狀態";
|
"RemoveNotificationsDesc" = "從導覽列隱藏通知按鈕";
|
||||||
"NoSubbar" = "隱藏子導覽列";
|
"RemoveSearch" = "隱藏搜尋按鈕";
|
||||||
"NoSubbarDesc" = "隱藏導覽列下的子導覽列(全部、讓你耳目一新的影片、直播中...等)";
|
"RemoveSearchDesc" = "從導覽列隱藏搜尋按鈕";
|
||||||
"NoYTLogo" = "移除YouTube圖示";
|
"RemoveVoiceSearch" = "隱藏語音搜尋按鈕";
|
||||||
"NoYTLogoDesc" = "移除在左上方導覽列的YouTube圖示";
|
"RemoveVoiceSearchDesc" = "從導覽列隱藏語音搜尋按鈕";
|
||||||
|
"RemoveSponsorBlock" = "Hide SponsorBlock button";
|
||||||
"Overlay" = "播放介面";
|
"RemoveSponsorBlockDesc" = "Hides SponsorBlock button from the Navigation bar.";
|
||||||
"HideAutoplay" = "隱藏自動播放開關";
|
"StickyNavbar" = "固定導覽列";
|
||||||
"HideAutoplayDesc" = "隱藏播放器中的自動播放開關";
|
"StickyNavbarDesc" = "向下滑動時保持可見狀態";
|
||||||
"HideSubs" = "隱藏字幕按鈕";
|
"NoSubbar" = "隱藏子導覽列";
|
||||||
"HideSubsDesc" = "隱藏播放器中的字幕按鈕";
|
"NoSubbarDesc" = "隱藏導覽列下的子導覽列(全部、讓你耳目一新的影片、直播中...等)";
|
||||||
"NoHUDMsgs" = "隱藏HUD訊息";
|
"NoYTLogo" = "移除YouTube圖示";
|
||||||
"NoHUDMsgsDesc" = "隱藏播放器中的所有功能。例如:開啟/關閉 CC、開啟循環播放...等";
|
"NoYTLogoDesc" = "移除在左上方導覽列的YouTube圖示";
|
||||||
"HidePrevNext" = "隱藏上一部和下一部按鈕";
|
"PremiumYTLogo" = "Set Premium YouTube logo";
|
||||||
"HidePrevNextDesc" = "隱藏播放器中上一部和下一部影片按鈕";
|
"PremiumYTLogoDesc" = "Sets Premium YouTube logo in the Navigation bar.";
|
||||||
"ReplacePrevNext" = "取代快轉和倒轉按鈕";
|
|
||||||
"ReplacePrevNextDesc" = "將播放器中的上一部和下一部影片按鈕取代為快轉和倒轉按鈕";
|
"Feed" = "Feed";
|
||||||
"NoDarkBg" = "移除深色背景";
|
"RemoveAds" = "移除廣告";
|
||||||
"NoDarkBgDesc" = "移除播放器中的深色背景";
|
"RemoveAdsDesc" = "移除應用程式內的廣告";
|
||||||
"NoEndScreenCards" = "隱藏片尾懸停影片";
|
"HideShorts" = "隱藏Shorts影片";
|
||||||
"NoEndScreenCardsDesc" = "隱藏當影片結束時的懸停影片(縮圖)";
|
"HideShortsDesc" = "從首頁、推薦...等,隱藏Shorts影片(不適用於觀看紀錄)";
|
||||||
"NoFullscreenActions" = "停用全螢幕操作";
|
"KeepSubsShorts" = "Keep Shorts in Subscriptions";
|
||||||
"NoFullscreenActionsDesc" = "在全螢幕模式下停用操作面板";
|
"KeepSubsShortsDesc" = "Prevents removing Shorts from Subscriptions tab.";
|
||||||
"PersistentProgressBar" = "固定進度條";
|
"RemoveCommunityPosts" = "Remove community posts";
|
||||||
"PersistentProgressBarDesc" = "總是在播放器中顯示進度條";
|
"RemoveCommunityPostsDesc" = "Removes community posts from the feed.";
|
||||||
"NoRelatedVids" = "隱藏相關影片";
|
"RemoveMoreTopics" = "Remove \"More topics\"";
|
||||||
"NoRelatedVidsDesc" = "移除全螢幕模式向上滑動時所出現的相關影片";
|
"RemoveMoreTopicsDesc" = "Removes \"More topics\" from the feed.";
|
||||||
"NoPromotionCards" = "隱藏付費推廣";
|
"FixAlbums" = "修復封面";
|
||||||
"NoPromotionCardsDesc" = "在付費推廣的影片中隱藏「付費推廣」";
|
"FixAlbumsDesc" = "為俄羅斯使用者修復封面顯示問題";
|
||||||
"NoWatermarks" = "隱藏浮水印";
|
|
||||||
"NoWatermarksDesc" = "在播放器中隱藏頻道浮水印";
|
"Player" = "播放器";
|
||||||
|
"Player.Overlay" = "播放介面";
|
||||||
"Player" = "播放器";
|
"SpeedControls" = "Speed controls";
|
||||||
"Miniplayer" = "啟用迷你播放器";
|
"SpeedControlsDesc" = "Shows speed control buttons on overlay";
|
||||||
"MiniplayerDesc" = "對於原本不支援迷你播放器的影片(例如針對兒童的影片),啟用迷你播放器";
|
"HideAutoplay" = "隱藏自動播放開關";
|
||||||
"PortraitFullscreen" = "直向全螢幕模式";
|
"HideAutoplayDesc" = "隱藏播放器中的自動播放開關";
|
||||||
"PortraitFullscreenDesc" = "啟用直向全螢幕模式";
|
"HideSubs" = "隱藏字幕按鈕";
|
||||||
"CopyWithTimestamp" = "複製時間標記連結";
|
"HideSubsDesc" = "隱藏播放器中的字幕按鈕";
|
||||||
"CopyWithTimestampDesc" = "透過按下暫停按鈕,將帶有時間標記的連結複製到剪貼簿";
|
"HidePrevNext" = "隱藏上一部和下一部按鈕";
|
||||||
"DisableAutoplay" = "停用自動播放";
|
"HidePrevNextDesc" = "隱藏播放器中上一部和下一部影片按鈕";
|
||||||
"DisableAutoplayDesc" = "在打開應用程式後防止自動播放影片";
|
"ReplacePrevNext" = "取代快轉和倒轉按鈕";
|
||||||
"DisableAutoCaptions" = "停用自動字幕";
|
"ReplacePrevNextDesc" = "將播放器中的上一部和下一部影片按鈕取代為快轉和倒轉按鈕";
|
||||||
"DisableAutoCaptionsDesc" = "防止字幕自動啟用";
|
"NoDarkBg" = "移除深色背景";
|
||||||
"NoContentWarning" = "略過內容警告";
|
"NoDarkBgDesc" = "移除播放器中的深色背景";
|
||||||
"NoContentWarningDesc" = "略過敏感內容警告訊息";
|
"NoEndScreenCards" = "隱藏片尾懸停影片";
|
||||||
"ClassicQuality" = "舊版本影片畫質";
|
"NoEndScreenCardsDesc" = "隱藏當影片結束時的懸停影片(縮圖)";
|
||||||
"ClassicQualityDesc" = "恢復舊版本選擇影片畫質的方式";
|
"NoAutonavEndScreenCards" = "Hide auto-play end screen";
|
||||||
"ExtraSpeedOptions" = "額外的播放速度選項";
|
"NoAutonavEndScreenCardsDesc" = "Hides the screen that shows what you can play next after playback ended. Disabling this option also disables auto-play";
|
||||||
"ExtraSpeedOptionsDesc" = "在播放速度選單中添加更多選項";
|
"NoFullscreenActions" = "停用全螢幕操作";
|
||||||
"DontSnap2Chapter" = "停用跳轉到章節";
|
"NoFullscreenActionsDesc" = "在全螢幕模式下停用操作面板";
|
||||||
"DontSnap2ChapterDesc" = "停用點兩下手勢跳轉到下一集";
|
"PersistentProgressBar" = "固定進度條";
|
||||||
"RedProgressBar" = "紅色進度條";
|
"PersistentProgressBarDesc" = "總是在播放器中顯示進度條";
|
||||||
"RedProgressBarDesc" = "恢復紅色的進度條";
|
"StockVolumeHUD" = "Stock volume HUD";
|
||||||
"NoHints" = "停用提示";
|
"StockVolumeHUDDesc" = "Displays system volume HUD in fullscreen.";
|
||||||
"NoHintsDesc" = "在播放過程中出現在右上角的作者提示";
|
"NoRelatedVids" = "隱藏相關影片";
|
||||||
"NoFreeZoom" = "停用自由縮放手勢";
|
"NoRelatedVidsDesc" = "移除全螢幕模式向上滑動時所出現的相關影片";
|
||||||
"NoFreeZoomDesc" = "停用新的自由缩放手势";
|
"NoPromotionCards" = "隱藏付費推廣";
|
||||||
"AutoFullscreen" = "全螢幕模式";
|
"NoPromotionCardsDesc" = "在付費推廣的影片中隱藏「付費推廣」";
|
||||||
"AutoFullscreenDesc" = "自動以全螢幕模式播放影片";
|
"NoWatermarks" = "隱藏浮水印";
|
||||||
"ExitFullscreen" = "結束時退出全螢幕模式";
|
"NoWatermarksDesc" = "在播放器中隱藏頻道浮水印";
|
||||||
"ExitFullscreenDesc" = "影片播放結束時退出全螢幕模式";
|
"VideoEndTime" = "Show playback end time";
|
||||||
"NoDoubleTap2Seek" = "停用點兩下快轉功能";
|
"VideoEndTimeDesc" = "Adds video playback end time to the player bar.";
|
||||||
"NoDoubleTap2SeekDesc" = "停用點兩下手勢進行快轉";
|
"24hrFormat" = "24-hour format";
|
||||||
|
"24hrFormatDesc" = "Shows end time in 24-hour format.";
|
||||||
"Tabbar" = "下方標籤欄";
|
|
||||||
"RemoveLabels" = "移除文字";
|
"Player.Interface" = "Interface";
|
||||||
"RemoveLabelsDesc" = "移除標籤文字";
|
"PortraitFullscreen" = "直向全螢幕模式";
|
||||||
"RemoveIndicators" = "刪除標記";
|
"PortraitFullscreenDesc" = "啟用直向全螢幕模式";
|
||||||
"RemoveIndicatorsDesc" = "刪除標籤通知標記";
|
"ClassicQuality" = "舊版本影片畫質";
|
||||||
"ReExplore" = "用探索取代Shorts分頁";
|
"ClassicQualityDesc" = "恢復舊版本選擇影片畫質的方式";
|
||||||
"ReExploreDesc" = "如同舊版YouTube一樣顯示「探索」而非「Shorts」";
|
"ExtraSpeedOptions" = "額外的播放速度選項";
|
||||||
"AddExplore" = "新增探索標籤";
|
"ExtraSpeedOptionsDesc" = "在播放速度選單中添加更多選項";
|
||||||
"AddExploreDesc" = "在下方標籤欄新增探索標籤";
|
"RedProgressBar" = "紅色進度條";
|
||||||
"HideShortsTab" = "隱藏Shorts";
|
"RedProgressBarDesc" = "恢復紅色的進度條";
|
||||||
"HideShortsTabDesc" = "從標籤欄中隱藏Shorts標籤";
|
"NoPlayerRemixButton" = "移除Remix按鈕";
|
||||||
"HideSubscriptionsTab" = "隱藏訂閱內容";
|
"NoPlayerRemixButtonDesc" = "移除播放器下方的Remix按鈕";
|
||||||
"HideSubscriptionsTabDesc" = "從標籤欄中隱藏訂閱內容";
|
"NoPlayerClipButton" = "移除剪輯片段按鈕";
|
||||||
"HideUploadButton" = "隱藏+";
|
"NoPlayerClipButtonDesc" = "移除播放器下方的剪輯片段按鈕";
|
||||||
"HideUploadButtonDesc" = "從標籤欄中隱藏+標籤";
|
"NoPlayerDownloadButton" = "移除下載按鈕";
|
||||||
"HideLibraryTab" = "隱藏媒體庫";
|
"NoPlayerDownloadButtonDesc" = "移除播放器下方的下載按鈕";
|
||||||
"HideLibraryTabDesc" = "從標籤欄中隱藏媒體庫標籤";
|
|
||||||
|
"Player.Actions" = "Actions";
|
||||||
"Shorts" = "Shorts";
|
"BackgroundPlayback" = "背景播放";
|
||||||
"ShortsOnlyMode" = "只看Shorts模式";
|
"BackgroundPlaybackDesc" = "啟用背景播放";
|
||||||
"ShortsOnlyModeDesc" = "限制YouTube功能只能觀看Shorts影片";
|
"Miniplayer" = "啟用迷你播放器";
|
||||||
"HideShorts" = "隱藏Shorts影片";
|
"MiniplayerDesc" = "對於原本不支援迷你播放器的影片(例如針對兒童的影片),啟用迷你播放器";
|
||||||
"HideShortsDesc" = "從首頁、推薦...等,隱藏Shorts影片(不適用於觀看紀錄)";
|
"DisableAutoplay" = "停用自動播放";
|
||||||
"ShortsProgress" = "啟用時間進度條";
|
"DisableAutoplayDesc" = "在打開應用程式後防止自動播放影片";
|
||||||
"ShortsProgressDesc" = "在Shorts底部顯示進度條";
|
"DisableAutoCaptions" = "停用自動字幕";
|
||||||
"PinchToFullscreenShorts" = "捏合切換全螢幕";
|
"DisableAutoCaptionsDesc" = "防止字幕自動啟用";
|
||||||
"PinchToFullscreenShortsDesc" = "透過兩指縮放手勢,控制覆蓋層的顯示,讓Shorts以全螢幕模式播放";
|
"NoContentWarning" = "略過內容警告";
|
||||||
"ShortsToRegular" = "Shorts轉為一般影片";
|
"NoContentWarningDesc" = "略過敏感內容警告訊息";
|
||||||
"ShortsToRegularDesc" = "將Shorts作為一般影片開啟";
|
"NoHints" = "停用提示";
|
||||||
"ResumeShorts" = "不要從Shorts開始";
|
"NoHintsDesc" = "在播放過程中出現在右上角的作者提示";
|
||||||
"ResumeShortsDesc" = "防止重新開啟應用程式時從Shorts開始播放,如果在觀看Shorts時關閉,就會發生這種情況";
|
"AutoFullscreen" = "全螢幕模式";
|
||||||
"HideShortsLogo" = "隱藏Shorts圖示";
|
"AutoFullscreenDesc" = "自動以全螢幕模式播放影片";
|
||||||
"HideShortsLogoDesc" = "左上角Shorts圖示";
|
"ExitFullscreen" = "結束時退出全螢幕模式";
|
||||||
"HideShortsSearch" = "隱藏搜尋按鈕";
|
"ExitFullscreenDesc" = "影片播放結束時退出全螢幕模式";
|
||||||
"HideShortsSearchDesc" = "從Shorts中隱藏搜尋按鈕";
|
|
||||||
"HideShortsCamera" = "隱藏相機按鈕";
|
"Player.Gestures" = "Gestures";
|
||||||
"HideShortsCameraDesc" = "從Shorts中隱藏相機按鈕";
|
"AdjustWithFinger" = "Adjust speed by gestures";
|
||||||
"HideShortsMore" = "隱藏更多 (⋮) 按鈕";
|
"AdjustWithFingerDesc" = "Allows adjusting playback speed by long press on player and moving finger up and down";
|
||||||
"HideShortsMoreDesc" = "從Shorts中隱藏更多 (⋮) 按鈕,也可以透過長按螢幕來完成";
|
"PreserveSpeed" = "Preserve Speed";
|
||||||
"HideShortsSubscriptions" = "隱藏訂閱按鈕";
|
"PreserveSpeedDesc" = "Preserves adjusted speed after gesture completion";
|
||||||
"HideShortsSubscriptionsDesc" = "隱藏當Shorts暫停時顯示的訂閱按鈕";
|
"TwoFingerTapToPause" = "Pause using two fingers";
|
||||||
"HideShortsLike" = "隱藏喜歡按鈕";
|
"TwoFingerTapToPauseDesc" = "Pause/Resume playback by tapping on the screen using two fingers.";
|
||||||
"HideShortsLikeDesc" = "從Shorts中隱藏喜歡按鈕";
|
"TwoFingerPanToBrightness" = "Adjust brightness";
|
||||||
"HideShortsDislike" = "隱藏不喜歡按鈕";
|
"TwoFingerPanToBrightnessDesc" = "Allows adjusting screen brigthness by sliding up/down using two fingers.";
|
||||||
"HideShortsDislikeDesc" = "從Shorts中隱藏不喜歡按鈕";
|
"CopyWithTimestamp" = "複製時間標記連結";
|
||||||
"HideShortsComments" = "隱藏評論按鈕";
|
"CopyWithTimestampDesc" = "透過按下暫停按鈕,將帶有時間標記的連結複製到剪貼簿";
|
||||||
"HideShortsCommentsDesc" = "從Shorts中隱藏評論按鈕";
|
"PauseOnOverlay" = "Pause on overlay";
|
||||||
"HideShortsRemix" = "隱藏Remix按鈕";
|
"PauseOnOverlayDesc" = "Sets playback on pause if overlay appears.";
|
||||||
"HideShortsRemixDesc" = "從Shorts中隱藏Remix按鈕";
|
"DontSnap2Chapter" = "停用跳轉到章節";
|
||||||
"HideShortsShare" = "隱藏分享按鈕";
|
"DontSnap2ChapterDesc" = "停用點兩下手勢跳轉到下一集";
|
||||||
"HideShortsShareDesc" = "從Shorts中隱藏分享按鈕";
|
"NoTwoFingerSnapToChapter" = "Disable two finger double tap";
|
||||||
"HideShortsAvatars" = "隱藏頻道頭像";
|
"NoTwoFingerSnapToChapterDesc" = "Disables two finger double tap snap to chapter gesture.";
|
||||||
"HideShortsAvatarsDesc" = "隱藏右下角的頻道圖片";
|
"NoFreeZoom" = "停用自由縮放手勢";
|
||||||
"HideShortsThanks" = "隱藏超級感謝按鈕";
|
"NoFreeZoomDesc" = "停用新的自由缩放手势";
|
||||||
"HideShortsThanksDesc" = "從Shorts中隱藏超級感謝 (贊助) 按鈕";
|
"NoDoubleTap2Seek" = "停用點兩下快轉功能";
|
||||||
"HideShortsSource" = "隱藏Shorts來源";
|
"NoDoubleTap2SeekDesc" = "停用點兩下手勢進行快轉";
|
||||||
"HideShortsSourceDesc" = "在頻道名稱下隱藏Shorts來源";
|
|
||||||
"HideShortsChannelName" = "隱藏頻道名稱";
|
"Shorts" = "Shorts";
|
||||||
"HideShortsChannelNameDesc" = "從Shorts中隱藏頻道名稱和訂閱按鈕";
|
"ShortsOnlyMode" = "只看Shorts模式";
|
||||||
"HideShortsDescription" = "隱藏描述";
|
"ShortsOnlyModeDesc" = "限制YouTube功能只能觀看Shorts影片";
|
||||||
"HideShortsDescriptionDesc" = "隱藏頻道名稱下的Shorts描述";
|
"AutoSkipShorts" = "Auto-skip Shorts";
|
||||||
"HideShortsAudioTrack" = "隱藏原始音效";
|
"AutoSkipShortsDesc" = "Moves to the next video when the current video playback finishes.";
|
||||||
"HideShortsAudioTrackDesc" = "隱藏Shorts描述下的原始音效";
|
"ShortsProgress" = "啟用時間進度條";
|
||||||
|
"ShortsProgressDesc" = "在Shorts底部顯示進度條";
|
||||||
"Other" = "其它";
|
"SpeedByLongTap" = "Increase Shorts playback rate";
|
||||||
"CopyVideoInfo" = "複製影片資訊";
|
"SpeedByLongTapDesc" = "Allows to speed up playback by long pressing on a certain part of the screen.";
|
||||||
"CopyVideoInfoDesc" = "新增按鈕將影片標題和說明,複製到影片說明欄";
|
"SpeedLocation" = "Activation location";
|
||||||
"PostManager" = "儲存貼文資訊";
|
"LeftSide" = "Left side";
|
||||||
"PostManagerDesc" = "長按可以複製貼文內容或將貼文儲存為圖片";
|
"RightSide" = "Right side";
|
||||||
"SavePostImage" = "儲存社群貼文圖片";
|
"PinchToFullscreenShorts" = "捏合切換全螢幕";
|
||||||
"SavePostImageDesc" = "長按社群貼文圖片儲存到照片應用";
|
"PinchToFullscreenShortsDesc" = "透過兩指縮放手勢,控制覆蓋層的顯示,讓Shorts以全螢幕模式播放";
|
||||||
"SaveProfilePhoto" = "儲存個人檔案照片";
|
"ShortsToRegular" = "Shorts轉為一般影片";
|
||||||
"SaveProfilePhotoDesc" = "長按個人檔案照片儲存到照片應用";
|
"ShortsToRegularDesc" = "將Shorts作為一般影片開啟";
|
||||||
"CommentManager" = "Save comment information";
|
"HideShortsLogo" = "隱藏Shorts圖示";
|
||||||
"CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
|
"HideShortsLogoDesc" = "左上角Shorts圖示";
|
||||||
"FixAlbums" = "修復封面";
|
"HideShortsSearch" = "隱藏搜尋按鈕";
|
||||||
"FixAlbumsDesc" = "為俄羅斯使用者修復封面顯示問題";
|
"HideShortsSearchDesc" = "從Shorts中隱藏搜尋按鈕";
|
||||||
"RemovePlayNext" = "移除「播放下一個」";
|
"HideShortsCamera" = "隱藏相機按鈕";
|
||||||
"RemovePlayNextDesc" = "從選單移除「播放下一個」";
|
"HideShortsCameraDesc" = "從Shorts中隱藏相機按鈕";
|
||||||
"NoContinueWatching" = "移除「繼續觀看」";
|
"HideShortsMore" = "隱藏更多 (⋮) 按鈕";
|
||||||
"NoContinueWatchingDesc" = "從首頁中移除包含未完成影片的「繼續觀看」部分";
|
"HideShortsMoreDesc" = "從Shorts中隱藏更多 (⋮) 按鈕,也可以透過長按螢幕來完成";
|
||||||
"NoSearchHistory" = "隱藏搜尋記錄";
|
"HideShortsSubscriptions" = "隱藏訂閱按鈕";
|
||||||
"NoSearchHistoryDesc" = "視覺上隱藏搜尋歷史紀錄和建議。注意:您的搜尋紀錄仍然可在其它YouTube客戶端中存取";
|
"HideShortsSubscriptionsDesc" = "隱藏當Shorts暫停時顯示的訂閱按鈕";
|
||||||
"NoRelatedWatchNexts" = "隱藏播放器下的所有影片";
|
|
||||||
"NoRelatedWatchNextsDesc" = "只留下影片資訊和留言區域";
|
"Tabbar" = "下方標籤欄";
|
||||||
"StickSortComments" = "固定留言排序";
|
"RemoveLabels" = "移除文字";
|
||||||
"StickSortCommentsDesc" = "將留言排序(熱門、最新)功能固定,這樣在滾動時就不會消失";
|
"RemoveLabelsDesc" = "移除標籤文字";
|
||||||
"HideSortComments" = "隱藏留言排序";
|
"RemoveIndicators" = "刪除標記";
|
||||||
"HideSortCommentsDesc" = "隱藏留言排序(熱門、最新)功能,將永不顯示";
|
"RemoveIndicatorsDesc" = "刪除標籤通知標記";
|
||||||
"PlaylistOldMinibar" = "舊版播放清單";
|
"ReExplore" = "用探索取代Shorts分頁";
|
||||||
"PlaylistOldMinibarDesc" = "將新版的浮動播放清單面板替換為舊版";
|
"ReExploreDesc" = "如同舊版YouTube一樣顯示「探索」而非「Shorts」";
|
||||||
"DisableRTL" = "停用RTL格式";
|
"AddExplore" = "新增探索標籤";
|
||||||
"DisableRTLDesc" = "強制將初始顯示從右到左(RTL)格式的語言,改為從左到右(LTR)顯示";
|
"AddExploreDesc" = "在下方標籤欄新增探索標籤";
|
||||||
|
"HideShortsTab" = "隱藏Shorts";
|
||||||
"Startup" = "啟動頁面";
|
"HideShortsTabDesc" = "從標籤欄中隱藏Shorts標籤";
|
||||||
"Home" = "首頁";
|
"HideSubscriptionsTab" = "隱藏訂閱內容";
|
||||||
"Explore" = "探索";
|
"HideSubscriptionsTabDesc" = "從標籤欄中隱藏訂閱內容";
|
||||||
"ShortsTab" = "Shorts";
|
"HideUploadButton" = "隱藏+";
|
||||||
"Subscriptions" = "訂閱內容";
|
"HideUploadButtonDesc" = "從標籤欄中隱藏+標籤";
|
||||||
"Library" = "媒體庫";
|
"HideLibraryTab" = "隱藏媒體庫";
|
||||||
"Warning" = "警告";
|
"HideLibraryTabDesc" = "Hides Library tab from the Tab bar.\n\nThis tab can be restored by long pressing Home tab.";
|
||||||
"TabIsHidden" = "無法將隱藏的標籤選為啟動頁面";
|
|
||||||
|
"Interface" = "Interface";
|
||||||
"DonateViaPayPal" = "透過PayPal贊助";
|
"OledTheme" = "Oled theme";
|
||||||
"SupportViaGhSponsors" = "透過Github贊助支持開發";
|
"OledThemeDesc" = "Turns all dark colors to black";
|
||||||
"Version" = "版本";
|
"NativeShare" = "Native share sheet";
|
||||||
"About" = "關於";
|
"NativeShareDesc" = "Uses system share sheet to share media";
|
||||||
"Credits" = "貢獻";
|
"RemoveInlineComment" = "Remove inline comment";
|
||||||
"Developer" = "YTLite開發者";
|
"RemoveInlineCommentDesc" = "Removes comment section under the player.";
|
||||||
"ChineseSimplified" = "簡體中文在地化";
|
"RemovePlayNext" = "移除「播放下一個」";
|
||||||
"ChineseTraditional" = "繁體中文在地化";
|
"RemovePlayNextDesc" = "從選單移除「播放下一個」";
|
||||||
"French" = "法文在地化";
|
"RemoveDownloadMenu" = "移除「下載影片」";
|
||||||
"Spanish" = "西班牙文在地化";
|
"RemoveDownloadMenuDesc" = "從選單移除「下載影片」選項";
|
||||||
"Japanese" = "日本語在地化";
|
"RemoveWatchLaterMenu" = "移除「儲存至稍後觀看清單」";
|
||||||
"Vietnamese" = "越南語在地化";
|
"RemoveWatchLaterMenuDesc" = "從選單移除「儲存至稍後觀看清單」選項";
|
||||||
"Advanced" = "進階模式";
|
"RemoveSaveToPlaylistMenu" = "移除「儲存至播放清單」";
|
||||||
"AdvancedModeReminder" = "您是否想啟用YTLite的進階模式?\n\n這個模式提供了50多個額外的選項,可以自訂義和優化您的YouTube使用體驗。您稍後可以在「設定」中 → %@ → %@ → %@ 啟用或停用它。";
|
"RemoveSaveToPlaylistMenuDesc" = "從選單移除「儲存至播放清單」選項";
|
||||||
"ClearCache" = "清除快取";
|
"RemoveShareMenu" = "移除「分享」";
|
||||||
"ResetSettings" = "重置YTLite設定";
|
"RemoveShareMenuDesc" = "從選單中移除「分享」選項";
|
||||||
"ResetMessage" = "這個選項會將YTLite重置為預設值,並關閉Youtube\n\n您確定要繼續嗎?";
|
"RemoveNotInterestedMenu" = "移除「不感興趣」";
|
||||||
"ShortsOnlyWarning" = "您確定要開啟此模式嗎?\n\n在此模式下,您只能觀看Shorts影片,無法進行其它操作。\n\n您可以在Shorts播放器中使用兩指長按來停用只看Shorts模式。";
|
"RemoveNotInterestedMenuDesc" = "從選單移除「不感興趣」選項";
|
||||||
"ShortsModeTurnedOff" = "已關閉「只看Shorts模式」";
|
"RemoveDontRecommendMenu" = "移除「不要推薦這個頻道」";
|
||||||
"Yes" = "是";
|
"RemoveDontRecommendMenuDesc" = "從選單移除「不要推薦這個頻道」選項";
|
||||||
"No" = "否";
|
"RemoveReportMenu" = "移除「檢舉」";
|
||||||
|
"RemoveReportMenuDesc" = "從選單移除「檢舉」選項";
|
||||||
"SelectAction" = "選擇動作";
|
"NoContinueWatching" = "移除「繼續觀看」";
|
||||||
"CopyTitle" = "複製標題";
|
"NoContinueWatchingDesc" = "從首頁中移除包含未完成影片的「繼續觀看」部分";
|
||||||
"CopyDescription" = "複製說明";
|
"NoSearchHistory" = "隱藏搜尋記錄";
|
||||||
"CopyPostText" = "複製貼文內容";
|
"NoSearchHistoryDesc" = "視覺上隱藏搜尋歷史紀錄和建議。注意:您的搜尋紀錄仍然可在其它YouTube客戶端中存取";
|
||||||
"SavePostAsImage" = "貼文儲存為圖片";
|
"NoRelatedWatchNexts" = "隱藏播放器下的所有影片";
|
||||||
"CopyPostAsImage" = "複製貼文為圖片";
|
"NoRelatedWatchNextsDesc" = "只留下影片資訊和留言區域";
|
||||||
"CopyCommentText" = "Copy comment text";
|
"StickSortComments" = "固定留言排序";
|
||||||
"SaveCommentAsImage" = "Save comment as image";
|
"StickSortCommentsDesc" = "將留言排序(熱門、最新)功能固定,這樣在滾動時就不會消失";
|
||||||
"CopyCommentAsImage" = "Copy comment as image";
|
"HideSortComments" = "隱藏留言排序";
|
||||||
"Cancel" = "取消";
|
"HideSortCommentsDesc" = "隱藏留言排序(熱門、最新)功能,將永不顯示";
|
||||||
"Copied" = "已複製到剪貼簿";
|
"PlaylistOldMinibar" = "舊版播放清單";
|
||||||
"Saved" = "已儲存到照片應用";
|
"PlaylistOldMinibarDesc" = "將新版的浮動播放清單面板替換為舊版";
|
||||||
"Done" = "Done";
|
"StartupAnimation" = "Startup animation";
|
||||||
"Error" = "發生錯誤";
|
"StartupAnimationDesc" = "Displays YouTube startup loading animation";
|
||||||
|
"OldYTUI" = "Old UI";
|
||||||
|
"OldYTUIDesc" = "Spoofs YouTube version so that it will return old interface";
|
||||||
|
"DisableRTL" = "停用RTL格式";
|
||||||
|
"DisableRTLDesc" = "強制將初始顯示從右到左(RTL)格式的語言,改為從左到右(LTR)顯示";
|
||||||
|
|
||||||
|
"HoldToSpeed" = "Hold to speed";
|
||||||
|
"DefaultPlaybackRate" = "Default playback rate";
|
||||||
|
"PlaybackQualityOnWiFi" = "使用Wi-Fi時的影片畫質";
|
||||||
|
"PlaybackQualityOnCellular" = "使用行動網路時的影片畫質";
|
||||||
|
|
||||||
|
"Startup" = "啟動頁面";
|
||||||
|
"Home" = "首頁";
|
||||||
|
"Explore" = "探索";
|
||||||
|
"ShortsTab" = "Shorts";
|
||||||
|
"Subscriptions" = "訂閱內容";
|
||||||
|
"Library" = "媒體庫";
|
||||||
|
"Warning" = "警告";
|
||||||
|
"TabIsHidden" = "無法將隱藏的標籤選為啟動頁面";
|
||||||
|
|
||||||
|
"SupportDevelopment" = "支持開發";
|
||||||
|
"SupportDevelopmentDesc" = "如果您喜歡 YTLite 並且願意支持開發,可以使用以下任何方便的方式支持。\n感謝❤";
|
||||||
|
"Contributors" = "Contributors";
|
||||||
|
"OpenSourceLibs" = "Open Source Libraries";
|
||||||
|
"Preferences" = "%@ preferences";
|
||||||
|
"Version" = "版本";
|
||||||
|
"About" = "關於";
|
||||||
|
"Credits" = "貢獻";
|
||||||
|
"Developer" = "YTLite開發者";
|
||||||
|
"SpecialThanks" = "Special thanks";
|
||||||
|
"SpecialThanks.Test" = "Invaluable contribution to tweak testing";
|
||||||
|
"ChineseSimplified" = "簡體中文在地化";
|
||||||
|
"ChineseTraditional" = "繁體中文在地化";
|
||||||
|
"French" = "法文在地化";
|
||||||
|
"Spanish" = "西班牙文在地化";
|
||||||
|
"Japanese" = "日本語在地化";
|
||||||
|
"Vietnamese" = "越南語在地化";
|
||||||
|
"Advanced" = "進階模式";
|
||||||
|
"AdvancedDesc" = "更多自訂功能";
|
||||||
|
"AdvancedModeEnabled" = "Advanced mode has been enabled";
|
||||||
|
"AdvancedModeDisabled" = "Advanced mode has been disabled";
|
||||||
|
"AdvancedModeReminder" = "您是否想啟用YTLite的進階模式?\n\n這個模式提供了50多個額外的選項,可以自訂義和優化您的YouTube使用體驗。您稍後可以在「設定」中 → %@ → %@ → %@ 啟用或停用它。";
|
||||||
|
"ClearCache" = "清除快取";
|
||||||
|
"ClearCacheMessage" = "You're about to clear %@ of cache.\n\nDo you want to continue?";
|
||||||
|
"ImportPreferences" = "Import preferences";
|
||||||
|
"PreImportMessage" = "This action will replace the current preferences with those from the selected file.\n\nAre you sure you want to continue?";
|
||||||
|
"ExportPreferences" = "Export preferences";
|
||||||
|
"ResetSettings" = "重置YTLite設定";
|
||||||
|
"ResetMessage" = "這個選項會將YTLite重置為預設值,並關閉Youtube\n\n您確定要繼續嗎?";
|
||||||
|
"ShortsOnlyWarning" = "您確定要開啟此模式嗎?\n\n在此模式下,您只能觀看Shorts影片,無法進行其它操作。\n\n您可以在Shorts播放器中使用兩指長按來停用只看Shorts模式。";
|
||||||
|
"ShortsModeTurnedOff" = "已關閉「只看Shorts模式」";
|
||||||
|
"LibraryAdded" = "The You/Library tab has been restored";
|
||||||
|
"LibraryRemoved" = "The You/Library tab has been removed";
|
||||||
|
"Yes" = "是";
|
||||||
|
"No" = "否";
|
||||||
|
|
||||||
|
"Select" = "Select";
|
||||||
|
"Default" = "預設";
|
||||||
|
"Best" = "最佳";
|
||||||
|
"Show" = "Show";
|
||||||
|
"Disable" = "Disable";
|
||||||
|
"Disabled" = "Disabled";
|
||||||
|
"PlaybackSpeed" = "Playback Speed";
|
||||||
|
"SpeedPreserved" = "Speed preserved";
|
||||||
|
"ResetSpeed" = "Reset";
|
||||||
|
|
||||||
|
"Brightness" = "Brightness";
|
||||||
|
"Toast.PlaybackSpeed" = "Playback Speed";
|
||||||
|
|
||||||
|
"SelectAction" = "選擇動作";
|
||||||
|
"DownloadVideo" = "Download video";
|
||||||
|
"DownloadAudio" = "Download audio";
|
||||||
|
"SaveImage" = "Save image";
|
||||||
|
"CopyInformation" = "Copy information";
|
||||||
|
"CopyChannelName" = "Copy channel name";
|
||||||
|
"CopyTitle" = "複製標題";
|
||||||
|
"CopyDescription" = "複製說明";
|
||||||
|
"CopyTimestampedLink" = "Copy link with timestamp";
|
||||||
|
"PlayInExternalPlayer" = "Play in external player";
|
||||||
|
"PlayInSystemPlayer" = "Play in system player";
|
||||||
|
"PlayInInfuse" = "Play in Infuse";
|
||||||
|
"PlayInVLC" = "Play in VLC";
|
||||||
|
"PlayerNotFound" = "Player not found";
|
||||||
|
"OpenAsRegularVideo" = "Open as regular video";
|
||||||
|
"CopyPostText" = "複製貼文內容";
|
||||||
|
"SaveCurrentImage" = "儲存當前圖片";
|
||||||
|
"CopyCurrentImage" = "複製當前圖片";
|
||||||
|
"SavePostAsImage" = "儲存貼文為圖片";
|
||||||
|
"CopyPostAsImage" = "複製貼文為圖片";
|
||||||
|
"CopyCommentText" = "複製留言內容";
|
||||||
|
"SaveCommentAsImage" = "留言儲存為圖片";
|
||||||
|
"CopyCommentAsImage" = "複製留言為圖片";
|
||||||
|
"SaveProfilePicture" = "儲存個人檔案照片";
|
||||||
|
"CopyProfilePicture" = "複製個人檔案照片";
|
||||||
|
"DownloadThumbnail" = "Save thumbnail";
|
||||||
|
"CopyThumbnail" = "Copy thumbnail";
|
||||||
|
"Cancel" = "取消";
|
||||||
|
"Cancelled" = "Cancelled";
|
||||||
|
"Copied" = "已複製到剪貼簿";
|
||||||
|
"Saved" = "已儲存到照片應用";
|
||||||
|
"Done" = "Done";
|
||||||
|
"Error" = "發生錯誤";
|
||||||
|
"Error.Clipboard" = "Error. Check clipboard for more info";
|
||||||
|
"Error.PathIssue" = "Error. Problem with generating final path. Issue with media title?";
|
||||||
|
"Error.NoSpace" = "Insufficient space on the device.\n\nAt least %@ additional free space is required. Available free space: %@";
|
||||||
|
"Error.Multidownloading" = "Multi-downloading not available yet.";
|
||||||
|
"Error.FailedToImport" = "Failed to import preferences";
|
||||||
|
"DownloadingVideo" = "Downloading video";
|
||||||
|
"DownloadingAudio" = "Downloading audio";
|
||||||
|
"Converting" = "Converting";
|
||||||
|
"RetryLogin" = "Workaround activated.\n\nPlease try again.";
|
||||||
|
"LoginInfo" = "App restart required after successful signing into Google account";
|
||||||
|
|
||||||
|
"Welcome.Download" = "Download Media";
|
||||||
|
"Welcome.DownloadDesc" = "Download your favorite content, whether it's Videos, Shorts, Audio, or Profile photos. Copy interesting posts and comments or save them as images";
|
||||||
|
"Welcome.Content" = "Adjust Interface";
|
||||||
|
"Welcome.ContentDesc" = "Remove unwanted content and interface elements. Enable true OLED dark mode";
|
||||||
|
"Welcome.Player" = "Setup Player Behavior";
|
||||||
|
"Welcome.PlayerDesc" = "Сustomize the player's behavior, auto-select quality and playback speed. Control using gestures";
|
||||||
|
"Welcome.More" = "And even more...";
|
||||||
|
"Welcome.MoreDesc" = "YouTube Plus includes over 50 different options, including features like saving preferences and clearing cache. Settings are available in the YouTube Plus section under YouTube settings";
|
||||||
|
"SupportMe" = "Support me";
|
||||||
|
"Continue" = "Continue";
|
||||||
|
|
||||||
|
"DonationReminder" = "Your support makes YTPlus better... Support through tweak settings";
|
||||||
|
"DontRemind" = "Turn off";
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user