Compare commits

...
12 Commits
Author SHA1 Message Date
dayanch96 fe3a942de0 Merge branch 'main' of https://github.com/dayanch96/YTLite 2024-02-22 16:24:22 +03:00
dayanch96 123215f372 v2.6.3 2024-02-22 16:23:13 +03:00
Dan 07fc0b98c3 Merge pull request #61 from mumuisdog/main
Update zh-Hant Localizable
2024-02-21 18:37:01 +03:00
mumuisdog 537f828731 Update Localizable.strings 2024-02-21 22:50:23 +08:00
Dan 8218578734 Merge pull request #60 from xiangfeidexiaohuo/main
update zh-Hans
2024-02-21 15:05:59 +03:00
xiangfeidexiaohuo fe6b509b3b update zh-Hans
Signed-off-by: xiangfeidexiaohuo <jsjson@163.com>
2024-02-21 20:01:15 +08:00
Dan 8f72d70029 Merge pull request #59 from hiepvk/main
Update Localizable.strings
2024-02-21 09:45:42 +03:00
Hiệpvk 07a13df097 Update Localizable.strings 2024-02-21 13:41:30 +07:00
dayanch96 9a43e1b9b3 Merge branch 'main' of https://github.com/dayanch96/YTLite 2024-02-21 05:09:00 +03:00
dayanch96 f7d567bf5d v2.6.2 2024-02-21 05:08:56 +03:00
Dan 4921d95073 Merge pull request #58 from xiangfeidexiaohuo/main
update zh-Hans
2024-02-20 17:32:46 +03:00
xiangfeidexiaohuo 87cdca4867 update zh-Hans
Signed-off-by: xiangfeidexiaohuo <jsjson@163.com>
2024-02-20 22:28:42 +08:00
16 changed files with 265 additions and 118 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ endif
DEBUG=0 DEBUG=0
FINALPACKAGE=1 FINALPACKAGE=1
ARCHS = arm64 ARCHS = arm64
PACKAGE_VERSION = 2.6.1 PACKAGE_VERSION = 2.6.3
TARGET := iphone:clang:latest:13.0 TARGET := iphone:clang:latest:13.0
include $(THEOS)/makefiles/common.mk include $(THEOS)/makefiles/common.mk
+2 -2
View File
@@ -284,10 +284,10 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
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), createSwitchItem(LOC(@"CopyVideoInfo"), LOC(@"CopyVideoInfoDesc"), @"copyVideoInfo", &kCopyVideoInfo, selfObject),
createSwitchItem(LOC(@"CopyPostText"), LOC(@"CopyPostTextDesc"), @"copyPostText", &kCopyPostText, selfObject), createSwitchItem(LOC(@"PostManager"), LOC(@"PostManagerDesc"), @"postManager", &kPostManager, selfObject),
createSwitchItem(LOC(@"SavePostImage"), LOC(@"SavePostImageDesc"), @"savePostImage", &kSavePostImage, selfObject), createSwitchItem(LOC(@"SavePostImage"), LOC(@"SavePostImageDesc"), @"savePostImage", &kSavePostImage, selfObject),
createSwitchItem(LOC(@"SaveProfilePhoto"), LOC(@"SaveProfilePhotoDesc"), @"saveProfilePhoto", &kSaveProfilePhoto, selfObject), createSwitchItem(LOC(@"SaveProfilePhoto"), LOC(@"SaveProfilePhotoDesc"), @"saveProfilePhoto", &kSaveProfilePhoto, selfObject),
createSwitchItem(LOC(@"CopyCommentText"), LOC(@"CopyCommentTextDesc"), @"copyCommentText", &kCopyCommentText, selfObject), createSwitchItem(LOC(@"CommentManager"), LOC(@"CommentManagerDesc"), @"commentManager", &kCommentManager, selfObject),
createSwitchItem(LOC(@"FixAlbums"), LOC(@"FixAlbumsDesc"), @"fixAlbums", &kFixAlbums, selfObject), createSwitchItem(LOC(@"FixAlbums"), LOC(@"FixAlbumsDesc"), @"fixAlbums", &kFixAlbums, selfObject),
createSwitchItem(LOC(@"RemovePlayNext"), LOC(@"RemovePlayNextDesc"), @"removePlayNext", &kRemovePlayNext, selfObject), createSwitchItem(LOC(@"RemovePlayNext"), LOC(@"RemovePlayNextDesc"), @"removePlayNext", &kRemovePlayNext, selfObject),
createSwitchItem(LOC(@"NoContinueWatching"), LOC(@"NoContinueWatchingDesc"), @"noContinueWatching", &kNoContinueWatching, selfObject), createSwitchItem(LOC(@"NoContinueWatching"), LOC(@"NoContinueWatchingDesc"), @"noContinueWatching", &kNoContinueWatching, selfObject),
+10 -4
View File
@@ -111,10 +111,10 @@ BOOL kRemoveSubscriptions;
BOOL kRemoveUploads; BOOL kRemoveUploads;
BOOL kRemoveLibrary; BOOL kRemoveLibrary;
BOOL kCopyVideoInfo; BOOL kCopyVideoInfo;
BOOL kCopyPostText; BOOL kPostManager;
BOOL kSavePostImage; BOOL kSavePostImage;
BOOL kSaveProfilePhoto; BOOL kSaveProfilePhoto;
BOOL kCopyCommentText; BOOL kCommentManager;
BOOL kSavePost; BOOL kSavePost;
BOOL kFixAlbums; BOOL kFixAlbums;
BOOL kRemovePlayNext; BOOL kRemovePlayNext;
@@ -289,14 +289,20 @@ int kPivotIndex;
@end @end
@interface ASDisplayNode : NSObject @interface ASDisplayNode : NSObject
@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;
@end @end
@interface ELMContainerNode : ASDisplayNode @interface ELMContainerNode : ASDisplayNode
@property (nonatomic, strong, readwrite) NSString *copiedComment; @property (nonatomic, strong, readwrite) NSString *copiedComment;
@end @end
@interface ELMExpandableTextNode : ASDisplayNode
@property (atomic, assign, readonly) ASDisplayNode *currentTextNode;
@end
@interface ASNetworkImageNode : ASDisplayNode @interface ASNetworkImageNode : ASDisplayNode
@property (atomic, copy, readwrite) NSURL *URL; @property (atomic, copy, readwrite) NSURL *URL;
@end @end
@@ -307,10 +313,10 @@ int kPivotIndex;
@interface _ASDisplayView : UIView @interface _ASDisplayView : UIView
@property (nonatomic, strong, readwrite) ASDisplayNode *keepalive_node; @property (nonatomic, strong, readwrite) ASDisplayNode *keepalive_node;
- (void)copyText:(UILongPressGestureRecognizer *)sender; - (void)postManager:(UILongPressGestureRecognizer *)sender;
- (void)saveImage:(UILongPressGestureRecognizer *)sender; - (void)saveImage:(UILongPressGestureRecognizer *)sender;
- (void)savePFP:(UILongPressGestureRecognizer *)sender; - (void)savePFP:(UILongPressGestureRecognizer *)sender;
- (void)copyComment:(UILongPressGestureRecognizer *)sender; - (void)commentManager:(UILongPressGestureRecognizer *)sender;
@end @end
@interface MLHAMQueuePlayer : NSObject @interface MLHAMQueuePlayer : NSObject
+146 -55
View File
@@ -642,12 +642,11 @@ static BOOL isOverlayShown = YES;
%end %end
%hook ASDisplayNode %hook ASDisplayNode
- (void)didLoad { - (void)setFrame:(CGRect)frame {
%orig; %orig;
ASTextNode *textNode = (ASTextNode *)self; if (kCommentManager && [[self valueForKey:@"_accessibilityIdentifier"] isEqualToString:@"id.comment.content.label"]) {
ASTextNode *textNode = (ASTextNode *)self;
if (kCopyCommentText && [[self valueForKey:@"_accessibilityIdentifier"] isEqualToString:@"id.comment.content.label"]) {
NSString *comment = textNode.attributedText.string; NSString *comment = textNode.attributedText.string;
NSMutableArray *allObjects = self.supernodes.allObjects; NSMutableArray *allObjects = self.supernodes.allObjects;
@@ -658,18 +657,79 @@ static BOOL isOverlayShown = YES;
} }
} }
} }
if (kPostManager && [self isKindOfClass:NSClassFromString(@"ELMExpandableTextNode")]) {
ELMExpandableTextNode *expandableTextNode = (ELMExpandableTextNode *)self;
ASTextNode *textNode = (ASTextNode *)expandableTextNode.currentTextNode;
NSString *text = textNode.attributedText.string;
NSMutableArray *allObjects = self.supernodes.allObjects;
for (ELMContainerNode *containerNode in allObjects) {
if ([containerNode.description containsString:@"id.ui.backstage.original_post"] && text) {
containerNode.copiedComment = text;
break;
}
}
}
} }
%end %end
static void downloadImageFromURL(UIResponder *responder, NSURL *URL) {
NSString *URLString = URL.absoluteString;
if (kFixAlbums && [URLString hasPrefix:@"https://yt3."]) {
URLString = [URLString stringByReplacingOccurrencesOfString:@"https://yt3." withString:@"https://yt4."];
}
NSURL *downloadURL = nil;
if ([URLString containsString:@"c-fcrop"]) {
NSRange croppedURL = [URLString rangeOfString:@"c-fcrop"];
if (croppedURL.location != NSNotFound) {
NSString *newURL = [URLString stringByReplacingOccurrencesOfString:[URLString substringFromIndex:croppedURL.location] withString:@"nd-v1"];
downloadURL = [NSURL URLWithString:newURL];
}
} else {
downloadURL = URL;
}
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:downloadURL completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (data) {
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetCreationRequest *request = [PHAssetCreationRequest creationRequestForAsset];
[request addResourceWithType:PHAssetResourceTypePhoto data:data options:nil];
} completionHandler:^(BOOL success, NSError *error) {
[[%c(YTToastResponderEvent) eventWithMessage:success ? LOC(@"Saved") : [NSString stringWithFormat:LOC(@"%@: %@"), LOC(@"Error"), error.localizedDescription] firstResponder:responder] send];
}];
} else {
[[%c(YTToastResponderEvent) eventWithMessage:[NSString stringWithFormat:LOC(@"%@: %@"), LOC(@"Error"), error.localizedDescription] firstResponder:responder] send];
}
}] resume];
}
static void genImageFromLayer(CALayer *layer, UIColor *backgroundColor, void (^completionHandler)(UIImage *)) {
UIGraphicsBeginImageContextWithOptions(layer.frame.size, NO, 0.0);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, backgroundColor.CGColor);
CGContextFillRect(context, CGRectMake(0, 0, layer.frame.size.width, layer.frame.size.height));
[layer renderInContext:context];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if (completionHandler) {
completionHandler(image);
}
}
%hook _ASDisplayView %hook _ASDisplayView
- (void)setKeepalive_node:(id)arg1 { - (void)setKeepalive_node:(id)arg1 {
%orig; %orig;
NSArray *gesturesInfo = @[ NSArray *gesturesInfo = @[
@{@"selector": @"copyText:", @"text": @"ELMExpandableTextNode-View", @"key": @(kCopyPostText)}, @{@"selector": @"postManager:", @"text": @"id.ui.backstage.original_post", @"key": @(kPostManager)},
@{@"selector": @"saveImage:", @"text": @"YTImageZoomNode-View", @"key": @(kSavePostImage)}, @{@"selector": @"saveImage:", @"text": @"YTImageZoomNode-View", @"key": @(kSavePostImage)},
@{@"selector": @"savePFP:", @"text": @"ELMImageNode-View", @"key": @(kSaveProfilePhoto)}, @{@"selector": @"savePFP:", @"text": @"ELMImageNode-View", @"key": @(kSaveProfilePhoto)},
@{@"selector": @"copyComment:", @"text": @"id.ui.comment_cell", @"key": @(kCopyCommentText)} @{@"selector": @"commentManager:", @"text": @"id.ui.comment_cell", @"key": @(kCommentManager)}
]; ];
for (NSDictionary *gestureInfo in gesturesInfo) { for (NSDictionary *gestureInfo in gesturesInfo) {
@@ -713,13 +773,46 @@ static BOOL isOverlayShown = YES;
} }
%new %new
- (void)copyText:(UILongPressGestureRecognizer *)sender { - (void)postManager:(UILongPressGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateBegan) { if (sender.state == UIGestureRecognizerStateBegan) {
[UIPasteboard generalPasteboard].string = self.accessibilityLabel; ELMContainerNode *nodeForLayer = (ELMContainerNode *)self.keepalive_node.yogaChildren[0];
ELMContainerNode *containerNode = (ELMContainerNode *)self.keepalive_node;
NSString *text = containerNode.copiedComment;
CALayer *layer = nodeForLayer.layer;
UIColor *backgroundColor = containerNode.closestViewController.view.backgroundColor;
UIResponder *responder = self.nextResponder; UIAlertController *alertController = [UIAlertController alertControllerWithTitle:LOC(@"SelectAction") message:nil preferredStyle:UIAlertControllerStyleActionSheet];
while (responder && ![responder isKindOfClass:[UIViewController class]]) responder = responder.nextResponder; alertController.view.tintColor = [UIColor labelColor];
if (responder) [[%c(YTToastResponderEvent) eventWithMessage:LOC(@"Copied") firstResponder:responder] send];
[alertController addAction:[UIAlertAction actionWithTitle:LOC(@"CopyPostText") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
if (text) {
[UIPasteboard generalPasteboard].string = text;
[[%c(YTToastResponderEvent) eventWithMessage:LOC(@"Copied") firstResponder:containerNode.closestViewController] send];
}
}]];
[alertController addAction:[UIAlertAction actionWithTitle:LOC(@"SavePostAsImage") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
genImageFromLayer(layer, backgroundColor, ^(UIImage *image) {
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetCreationRequest *request = [PHAssetCreationRequest creationRequestForAssetFromImage:image];
request.creationDate = [NSDate date];
} completionHandler:^(BOOL success, NSError *error) {
NSString *message = success ? LOC(@"Saved") : [NSString stringWithFormat:LOC(@"%@: %@"), LOC(@"Error"), error.localizedDescription];
[[%c(YTToastResponderEvent) eventWithMessage:message firstResponder:containerNode.closestViewController] send];
}];
});
}]];
[alertController addAction:[UIAlertAction actionWithTitle:LOC(@"CopyPostAsImage") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
genImageFromLayer(layer, backgroundColor, ^(UIImage *image) {
[UIPasteboard generalPasteboard].image = image;
[[%c(YTToastResponderEvent) eventWithMessage:LOC(@"Copied") firstResponder:containerNode.closestViewController] send];
});
}]];
[alertController addAction:[UIAlertAction actionWithTitle:LOC(@"Cancel") style:UIAlertActionStyleCancel handler:nil]];
[containerNode.closestViewController presentViewController:alertController animated:YES completion:nil];
} }
} }
@@ -729,57 +822,55 @@ static BOOL isOverlayShown = YES;
ASNetworkImageNode *imageNode = (ASNetworkImageNode *)self.keepalive_node; ASNetworkImageNode *imageNode = (ASNetworkImageNode *)self.keepalive_node;
NSURL *imageURL = imageNode.URL; NSURL *imageURL = imageNode.URL;
if (imageURL) {
NSString *URLString = imageURL.absoluteString;
if (kFixAlbums && [URLString hasPrefix:@"https://yt3."]) { UIResponder *responder = self.nextResponder;
URLString = [URLString stringByReplacingOccurrencesOfString:@"https://yt3." withString:@"https://yt4."]; while (responder && ![responder isKindOfClass:[UIViewController class]]) responder = responder.nextResponder;
}
NSURL *downloadURL = nil; if (imageURL) downloadImageFromURL(responder, imageURL);
if ([URLString containsString:@"c-fcrop"]) {
NSRange croppedURL = [URLString rangeOfString:@"c-fcrop"];
if (croppedURL.location != NSNotFound) {
NSString *newURL = [URLString stringByReplacingOccurrencesOfString:[URLString substringFromIndex:croppedURL.location] withString:@"nd-v1"];
downloadURL = [NSURL URLWithString:newURL];
}
} else {
downloadURL = imageURL;
}
UIResponder *responder = self.nextResponder;
while (responder && ![responder isKindOfClass:[UIViewController class]]) responder = responder.nextResponder;
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:downloadURL completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (data) {
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetCreationRequest *request = [PHAssetCreationRequest creationRequestForAsset];
[request addResourceWithType:PHAssetResourceTypePhoto data:data options:nil];
} completionHandler:^(BOOL success, NSError *error) {
if (responder) [[%c(YTToastResponderEvent) eventWithMessage:success ? LOC(@"Saved") : [NSString stringWithFormat:LOC(@"%@: %@"), LOC(@"Error"), error.localizedDescription] firstResponder:responder] send];
}];
} else {
if (responder) [[%c(YTToastResponderEvent) eventWithMessage:[NSString stringWithFormat:LOC(@"%@: %@"), LOC(@"Error"), error.localizedDescription] firstResponder:responder] send];
}
}] resume];
}
} }
} }
%new %new
- (void)copyComment:(UILongPressGestureRecognizer *)sender { - (void)commentManager:(UILongPressGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateBegan) { if (sender.state == UIGestureRecognizerStateBegan) {
ELMContainerNode *containerNode = (ELMContainerNode *)self.keepalive_node; ELMContainerNode *containerNode = (ELMContainerNode *)self.keepalive_node;
NSString *comment = containerNode.copiedComment; NSString *comment = containerNode.copiedComment;
if (comment) { CALayer *layer = self.layer;
[UIPasteboard generalPasteboard].string = comment; UIColor *backgroundColor = containerNode.closestViewController.view.backgroundColor;
UIResponder *responder = self.nextResponder; UIAlertController *alertController = [UIAlertController alertControllerWithTitle:LOC(@"SelectAction") message:nil preferredStyle:UIAlertControllerStyleActionSheet];
while (responder && ![responder isKindOfClass:[UIViewController class]]) responder = responder.nextResponder; alertController.view.tintColor = [UIColor labelColor];
if (responder) [[%c(YTToastResponderEvent) eventWithMessage:LOC(@"Copied") firstResponder:responder] send];
} [alertController addAction:[UIAlertAction actionWithTitle:LOC(@"CopyCommentText") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
if (comment) {
[UIPasteboard generalPasteboard].string = comment;
[[%c(YTToastResponderEvent) eventWithMessage:LOC(@"Copied") firstResponder:containerNode.closestViewController] send];
}
}]];
[alertController addAction:[UIAlertAction actionWithTitle:LOC(@"SaveCommentAsImage") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
genImageFromLayer(layer, backgroundColor, ^(UIImage *image) {
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetCreationRequest *request = [PHAssetCreationRequest creationRequestForAssetFromImage:image];
request.creationDate = [NSDate date];
} completionHandler:^(BOOL success, NSError *error) {
NSString *message = success ? LOC(@"Saved") : [NSString stringWithFormat:LOC(@"%@: %@"), LOC(@"Error"), error.localizedDescription];
[[%c(YTToastResponderEvent) eventWithMessage:message firstResponder:containerNode.closestViewController] send];
}];
});
}]];
[alertController addAction:[UIAlertAction actionWithTitle:LOC(@"CopyCommentAsImage") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
genImageFromLayer(layer, backgroundColor, ^(UIImage *image) {
[UIPasteboard generalPasteboard].image = image;
[[%c(YTToastResponderEvent) eventWithMessage:LOC(@"Copied") firstResponder:containerNode.closestViewController] send];
});
}]];
[alertController addAction:[UIAlertAction actionWithTitle:LOC(@"Cancel") style:UIAlertActionStyleCancel handler:nil]];
[containerNode.closestViewController presentViewController:alertController animated:YES completion:nil];
} }
} }
%end %end
@@ -1067,10 +1158,10 @@ static void reloadPrefs() {
kRemoveUploads = (prefs[@"removeUploads"] != nil) ? [prefs[@"removeUploads"] boolValue] : YES; kRemoveUploads = (prefs[@"removeUploads"] != nil) ? [prefs[@"removeUploads"] boolValue] : YES;
kRemoveLibrary = [prefs[@"removeLibrary"] boolValue] ?: NO; kRemoveLibrary = [prefs[@"removeLibrary"] boolValue] ?: NO;
kCopyVideoInfo = [prefs[@"copyVideoInfo"] boolValue] ?: NO; kCopyVideoInfo = [prefs[@"copyVideoInfo"] boolValue] ?: NO;
kCopyPostText = [prefs[@"copyPostText"] boolValue] ?: NO; kPostManager = [prefs[@"postManager"] boolValue] ?: NO;
kSavePostImage = [prefs[@"savePostImage"] boolValue] ?: NO; kSavePostImage = [prefs[@"savePostImage"] boolValue] ?: NO;
kSaveProfilePhoto = [prefs[@"savePostImage"] boolValue] ?: NO; kSaveProfilePhoto = [prefs[@"savePostImage"] boolValue] ?: NO;
kCopyCommentText = [prefs[@"copyCommentText"] boolValue] ?: NO; kCommentManager = [prefs[@"commentManager"] boolValue] ?: NO;
kFixAlbums = [prefs[@"fixAlbums"] boolValue] ?: NO; kFixAlbums = [prefs[@"fixAlbums"] boolValue] ?: NO;
kRemovePlayNext = [prefs[@"removePlayNext"] boolValue] ?: NO; kRemovePlayNext = [prefs[@"removePlayNext"] boolValue] ?: NO;
kNoContinueWatching = [prefs[@"noContinueWatching"] boolValue] ?: NO; kNoContinueWatching = [prefs[@"noContinueWatching"] boolValue] ?: NO;
@@ -1153,10 +1244,10 @@ static void reloadPrefs() {
@"removeUploads" : @(kRemoveUploads), @"removeUploads" : @(kRemoveUploads),
@"removeLibrary" : @(kRemoveLibrary), @"removeLibrary" : @(kRemoveLibrary),
@"copyVideoInfo" : @(kCopyVideoInfo), @"copyVideoInfo" : @(kCopyVideoInfo),
@"copyPostText" : @(kCopyPostText), @"postManager" : @(kPostManager),
@"savePostImage" : @(kSavePostImage), @"savePostImage" : @(kSavePostImage),
@"saveProfilePhoto" : @(kSaveProfilePhoto), @"saveProfilePhoto" : @(kSaveProfilePhoto),
@"copyCommentText" : @(kCopyCommentText), @"commentManager" : @(kCommentManager),
@"fixAlbums" : @(kFixAlbums), @"fixAlbums" : @(kFixAlbums),
@"removePlayNext" : @(kRemovePlayNext), @"removePlayNext" : @(kRemovePlayNext),
@"noContinueWatching" : @(kNoContinueWatching), @"noContinueWatching" : @(kNoContinueWatching),
@@ -145,14 +145,14 @@
"Other" = "Other"; "Other" = "Other";
"CopyVideoInfo" = "Copy video information"; "CopyVideoInfo" = "Copy video information";
"CopyVideoInfoDesc" = "Adds button to copy video title and description into Video Description panel."; "CopyVideoInfoDesc" = "Adds button to copy video title and description into Video Description panel.";
"CopyPostText" = "Copy community posts text"; "PostManager" = "Save post information";
"CopyPostTextDesc" = "Copies community posts text to the clipboard by long tap."; "PostManagerDesc" = "Allows to copy post text and save post as image by long tap.";
"SavePostImage" = "Save image from community posts"; "SavePostImage" = "Save image from community posts";
"SavePostImageDesc" = "Saves community post image to the Photos app by long tap."; "SavePostImageDesc" = "Saves community post image to the Photos app by long tap.";
"SaveProfilePhoto" = "Save profile picture"; "SaveProfilePhoto" = "Save profile picture";
"SaveProfilePhotoDesc" = "Saves profile picture to the Photos app by long tap."; "SaveProfilePhotoDesc" = "Saves profile picture to the Photos app by long tap.";
"CopyCommentText" = "Copy comments text"; "CommentManager" = "Save comment information";
"CopyCommentTextDesc" = "Copies comments text to the clipboard by long tap."; "CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
"FixAlbums" = "Fix covers"; "FixAlbums" = "Fix covers";
"FixAlbumsDesc" = "Fixes the display of covers for users from Russia."; "FixAlbumsDesc" = "Fixes the display of covers for users from Russia.";
"RemovePlayNext" = "Remove \"Play next in queue\""; "RemovePlayNext" = "Remove \"Play next in queue\"";
@@ -206,6 +206,12 @@
"SelectAction" = "Select action"; "SelectAction" = "Select action";
"CopyTitle" = "Copy title"; "CopyTitle" = "Copy title";
"CopyDescription" = "Copy description"; "CopyDescription" = "Copy description";
"CopyPostText" = "Copy post text";
"SavePostAsImage" = "Save post as image";
"CopyPostAsImage" = "Copy post as image";
"CopyCommentText" = "Copy comment text";
"SaveCommentAsImage" = "Save comment as image";
"CopyCommentAsImage" = "Copy comment as image";
"Cancel" = "Cancel"; "Cancel" = "Cancel";
"Copied" = "Copied to clipboard"; "Copied" = "Copied to clipboard";
"Saved" = "Saved to Photos"; "Saved" = "Saved to Photos";
@@ -145,14 +145,14 @@
"Other" = "Otro"; "Other" = "Otro";
"CopyVideoInfo" = "Copy video information"; "CopyVideoInfo" = "Copy video information";
"CopyVideoInfoDesc" = "Adds button to copy video title and description into Video Description panel."; "CopyVideoInfoDesc" = "Adds button to copy video title and description into Video Description panel.";
"CopyPostText" = "Copia el texto de las publicaciones de la comunidad"; "PostManager" = "Save post information";
"CopyPostTextDesc" = "Copia el texto de los posts de la comunidad al portapapeles mediante pulsación larga"; "PostManagerDesc" = "Allows to copy post text and save post as image by long tap.";
"SavePostImage" = "Guardar imagen de las entradas de la comunidad"; "SavePostImage" = "Guardar imagen de las entradas de la comunidad";
"SavePostImageDesc" = "Guarda la imagen de las publicaciones de la comunidad en la aplicación Fotos con un toque prolongado"; "SavePostImageDesc" = "Guarda la imagen de las publicaciones de la comunidad en la aplicación Fotos con un toque prolongado";
"SaveProfilePhoto" = "Guardar foto de perfil"; "SaveProfilePhoto" = "Guardar foto de perfil";
"SaveProfilePhotoDesc" = "Guarda la imagen de perfil en la aplicación Fotos con un toque prolongado"; "SaveProfilePhotoDesc" = "Guarda la imagen de perfil en la aplicación Fotos con un toque prolongado";
"CopyCommentText" = "Copy comments text"; "CommentManager" = "Save comment information";
"CopyCommentTextDesc" = "Copies comments text to the clipboard by long tap."; "CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
"FixAlbums" = "Arreglar portadas"; "FixAlbums" = "Arreglar portadas";
"FixAlbumsDesc" = "Corrige la visualización de portadas para usuarios de Rusia"; "FixAlbumsDesc" = "Corrige la visualización de portadas para usuarios de Rusia";
"RemovePlayNext" = "Eliminar \"Reproducir siguiente en cola\""; "RemovePlayNext" = "Eliminar \"Reproducir siguiente en cola\"";
@@ -206,6 +206,12 @@
"SelectAction" = "Select action"; "SelectAction" = "Select action";
"CopyTitle" = "Copy title"; "CopyTitle" = "Copy title";
"CopyDescription" = "Copy description"; "CopyDescription" = "Copy description";
"CopyPostText" = "Copy post text";
"SavePostAsImage" = "Save post as image";
"CopyPostAsImage" = "Copy post as image";
"CopyCommentText" = "Copy comment text";
"SaveCommentAsImage" = "Save comment as image";
"CopyCommentAsImage" = "Copy comment as image";
"Cancel" = "Cancel"; "Cancel" = "Cancel";
"Copied" = "Copiado al portapapeles"; "Copied" = "Copiado al portapapeles";
"Done" = "Done"; "Done" = "Done";
@@ -145,14 +145,14 @@
"Other" = "Autre"; "Other" = "Autre";
"CopyVideoInfo" = "Copier les informations vidéo"; "CopyVideoInfo" = "Copier les informations vidéo";
"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."; "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.";
"CopyPostText" = "Copier le texte des publications de la communauté"; "PostManager" = "Save post information";
"CopyPostTextDesc" = "Copie le texte des publications de la communauté dans le presse-papiers en appuyant longuement."; "PostManagerDesc" = "Allows to copy post text and save post as image by long tap.";
"SavePostImage" = "Enregistrer l'image des publications de la communauté"; "SavePostImage" = "Enregistrer l'image des publications de la communauté";
"SavePostImageDesc" = "Enregistre l'image des publications de la communauté dans l'application Photos en appuyant longuement."; "SavePostImageDesc" = "Enregistre l'image des publications de la communauté dans l'application Photos en appuyant longuement.";
"SaveProfilePhoto" = "Enregistrer la photo de profil"; "SaveProfilePhoto" = "Enregistrer la photo de profil";
"SaveProfilePhotoDesc" = "Enregistre la photo de profil dans l'application Photos en appuyant longuement."; "SaveProfilePhotoDesc" = "Enregistre la photo de profil dans l'application Photos en appuyant longuement.";
"CopyCommentText" = "Copier le texte des commentaires"; "CommentManager" = "Save comment information";
"CopyCommentTextDesc" = "Copie le texte des commentaires dans le presse-papiers par un appui long."; "CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
"FixAlbums" = "Réparer les couvertures"; "FixAlbums" = "Réparer les couvertures";
"FixAlbumsDesc" = "Répare l'affichage des couvertures pour les utilisateurs de Russie."; "FixAlbumsDesc" = "Répare l'affichage des couvertures pour les utilisateurs de Russie.";
"RemovePlayNext" = "Supprimer \"Placer en première position dans la file d'attente\""; "RemovePlayNext" = "Supprimer \"Placer en première position dans la file d'attente\"";
@@ -206,6 +206,12 @@
"SelectAction" = "Sélectionner une action"; "SelectAction" = "Sélectionner une action";
"CopyTitle" = "Copier le titre"; "CopyTitle" = "Copier le titre";
"CopyDescription" = "Copier la description"; "CopyDescription" = "Copier la description";
"CopyPostText" = "Copy post text";
"SavePostAsImage" = "Save post as image";
"CopyPostAsImage" = "Copy post as image";
"CopyCommentText" = "Copy comment text";
"SaveCommentAsImage" = "Save comment as image";
"CopyCommentAsImage" = "Copy comment as image";
"Cancel" = "Annuler"; "Cancel" = "Annuler";
"Copied" = "Copié dans le presse-papiers"; "Copied" = "Copié dans le presse-papiers";
"Saved" = "Enregistré dans Photos"; "Saved" = "Enregistré dans Photos";
@@ -145,14 +145,14 @@
"Other" = "その他"; "Other" = "その他";
"CopyVideoInfo" = "Copy video information"; "CopyVideoInfo" = "Copy video information";
"CopyVideoInfoDesc" = "Adds button to copy video title and description into Video Description panel."; "CopyVideoInfoDesc" = "Adds button to copy video title and description into Video Description panel.";
"CopyPostText" = "Copy community posts text"; "PostManager" = "Save post information";
"CopyPostTextDesc" = "Copies community posts text to the clipboard by long tap."; "PostManagerDesc" = "Allows to copy post text and save post as image by long tap.";
"SavePostImage" = "Save community posts image"; "SavePostImage" = "Save community posts image";
"SavePostImageDesc" = "Saves community posts image to the Photos app by long tap."; "SavePostImageDesc" = "Saves community posts image to the Photos app by long tap.";
"SaveProfilePhoto" = "Save profile picture"; "SaveProfilePhoto" = "Save profile picture";
"SaveProfilePhotoDesc" = "Saves profile picture to the Photos app by long tap."; "SaveProfilePhotoDesc" = "Saves profile picture to the Photos app by long tap.";
"CopyCommentText" = "Copy comments text"; "CommentManager" = "Save comment information";
"CopyCommentTextDesc" = "Copies comments text to the clipboard by long tap."; "CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
"FixAlbums" = "Fix covers"; "FixAlbums" = "Fix covers";
"FixAlbumsDesc" = "Fixes the display of covers for users from Russia."; "FixAlbumsDesc" = "Fixes the display of covers for users from Russia.";
"RemovePlayNext" = "\"次に再生\"を削除"; "RemovePlayNext" = "\"次に再生\"を削除";
@@ -206,6 +206,12 @@
"SelectAction" = "Select action"; "SelectAction" = "Select action";
"CopyTitle" = "Copy title"; "CopyTitle" = "Copy title";
"CopyDescription" = "Copy description"; "CopyDescription" = "Copy description";
"CopyPostText" = "Copy post text";
"SavePostAsImage" = "Save post as image";
"CopyPostAsImage" = "Copy post as image";
"CopyCommentText" = "Copy comment text";
"SaveCommentAsImage" = "Save comment as image";
"CopyCommentAsImage" = "Copy comment as image";
"Cancel" = "Cancel"; "Cancel" = "Cancel";
"Copied" = "Copied to clipboard"; "Copied" = "Copied to clipboard";
"Saved" = "Saved to Photos"; "Saved" = "Saved to Photos";
@@ -145,14 +145,16 @@
"Other" = "Другие настройки"; "Other" = "Другие настройки";
"CopyVideoInfo" = "Копировать информацию о видео"; "CopyVideoInfo" = "Копировать информацию о видео";
"CopyVideoInfoDesc" = "Добавляет кнопку для копирования названия и описания видео в панель описания видео."; "CopyVideoInfoDesc" = "Добавляет кнопку для копирования названия и описания видео в панель описания видео.";
"CopyPostText" = "Копировать текст постов"; "PostManager" = "Сохранять информацию с постов";
"CopyPostTextDesc" = "Копирует текст постов в буфер обмена долгим нажатием."; "PostManagerDesc" = "Позволяет скопировать текст из поста или сохранить пост как фото долгим нажатием по нему.";
"SavePostImage" = "Сохранять изображения постов"; "SavePostImage" = "Сохранять изображения постов";
"SavePostImageDesc" = "Сохраняет изображения постов в «Фото» долгим нажатием по ним."; "SavePostImageDesc" = "Сохраняет изображения постов в «Фото» долгим нажатием по ним.";
"SaveProfilePhoto" = "Сохранять фото профиля"; "SaveProfilePhoto" = "Сохранять фото профиля";
"SaveProfilePhotoDesc" = "Сохраняет фото профиля в «Фото» долгим нажатием по нему."; "SaveProfilePhotoDesc" = "Сохраняет фото профиля в «Фото» долгим нажатием по нему.";
"CopyCommentText" = "Копировать текст комментариев"; "CopyCommentText" = "Копировать текст комментариев";
"CopyCommentTextDesc" = "Копирует текст комментариев в буфер обмена долгим нажатием."; "CopyCommentTextDesc" = "Копирует текст комментариев в буфер обмена долгим нажатием.";
"CommentManager" = "Сохранять информацию с комментариев";
"CommentManagerDesc" = "Позволяет скопировать текст из комментария или сохранить комментарий как фото долгим нажатием по нему.";
"FixAlbums" = "Исправить отображение обложек"; "FixAlbums" = "Исправить отображение обложек";
"FixAlbumsDesc" = "Исправляет отображение обложек в том случае, если вы из России."; "FixAlbumsDesc" = "Исправляет отображение обложек в том случае, если вы из России.";
"RemovePlayNext" = "Убрать «Добавить в начало очереди»"; "RemovePlayNext" = "Убрать «Добавить в начало очереди»";
@@ -206,6 +208,12 @@
"SelectAction" = "Выберите действие"; "SelectAction" = "Выберите действие";
"CopyTitle" = "Скопировать название"; "CopyTitle" = "Скопировать название";
"CopyDescription" = "Скопировать описание"; "CopyDescription" = "Скопировать описание";
"CopyPostText" = "Скопировать текст поста";
"SavePostAsImage" = "Сохранить пост как фото";
"CopyPostAsImage" = "Скопировать пост как фото";
"CopyCommentText" = "Скопировать текст комментария";
"SaveCommentAsImage" = "Сохранить комментарий как фото";
"CopyCommentAsImage" = "Скопировать комментарий как фото";
"Cancel" = "Отмена"; "Cancel" = "Отмена";
"Copied" = "Скопировано в буфер обмена"; "Copied" = "Скопировано в буфер обмена";
"Saved" = "Сохранено в Фото"; "Saved" = "Сохранено в Фото";
@@ -21,11 +21,11 @@
"NoYTLogoDesc" = "Xóa logo YouTube trong thanh Điều hướng."; "NoYTLogoDesc" = "Xóa logo YouTube trong thanh Điều hướng.";
"Overlay" = "Lớp phủ"; "Overlay" = "Lớp phủ";
"HideAutoplay" = "Ẩn công tắc Tự động phát"; "HideAutoplay" = "Ẩn nút Tự động phát";
"HideAutoplayDesc" = "Ẩn công tắc Tự động phát khỏi lớp phủ."; "HideAutoplayDesc" = "Ẩn nút Tự động phát trong trình phát video.";
"HideSubs" = "Ẩn nút phụ đề"; "HideSubs" = "Ẩn nút phụ đề";
"HideSubsDesc" = "Ẩn nút Phụ đề khỏi lớp phủ."; "HideSubsDesc" = "Ẩn nút Phụ đề khỏi lớp phủ.";
"NoHUDMsgs" = "Ẩn tin nhắn HUD"; "NoHUDMsgs" = "Ẩn thông báo HUD";
"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."; "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.";
"HidePrevNext" = "Ẩn nút Trước và Tiếp theo"; "HidePrevNext" = "Ẩn nút Trước và Tiếp theo";
"HidePrevNextDesc" = "Ẩn các nút Trước và Tiếp theo khỏi lớp phủ video."; "HidePrevNextDesc" = "Ẩn các nút Trước và Tiếp theo khỏi lớp phủ video.";
@@ -43,40 +43,40 @@
"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."; "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.";
"NoPromotionCards" = "Ẩn thẻ Quảng cáo trả phí"; "NoPromotionCards" = "Ẩn thẻ Quảng cáo trả phí";
"NoPromotionCardsDesc" = "Ẩn thẻ \"Bao gồm quảng cáo trả phí\" trong các video có quảng cáo."; "NoPromotionCardsDesc" = "Ẩn thẻ \"Bao gồm quảng cáo trả phí\" trong các video có quảng cáo.";
"NoWatermarks" = "Ẩn hình mờ"; "NoWatermarks" = "Ẩn watermark của kênh";
"NoWatermarksDesc" = "Ẩn hình mờ kênh khi trình phát."; "NoWatermarksDesc" = "Ẩn watermark của kênh trong video. Yêu cầu khi động lại ứng dụng.";
"Player" = "Trình phát"; "Player" = "Trình phát";
"Miniplayer" = "Bật trình phát mini"; "Miniplayer" = "Cho phép sử dụng trình phát thu nhỏ với mọi video";
"MiniplayerDesc" = "Bật trình phát mini cho các 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."; "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.";
"PortraitFullscreen" = "Chế độ toàn màn hình dọc"; "PortraitFullscreen" = "Chế độ toàn màn hình dọc";
"PortraitFullscreenDesc" = "Cho phép hỗ trợ chế độ toàn màn hình dọc."; "PortraitFullscreenDesc" = "Cho phép hỗ trợ chế độ toàn màn hình dọc.";
"CopyWithTimestamp" = "Sao chép các liên kết có dấu thời gian"; "CopyWithTimestamp" = "Sao chép các liên kết có dấu thời gian";
"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."; "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.";
"DisableAutoplay" = "Tắt video Tự động phát"; "DisableAutoplay" = "Tắt video Tự động phát";
"DisableAutoplayDesc" = "Ngăn chặn phát lại video sau khi mở."; "DisableAutoplayDesc" = "Ngăn chặn phát lại video sau khi mở.";
"DisableAutoCaptions" = "Tắt phụ đề tự động"; "DisableAutoCaptions" = "Tắt chú thích tự động";
"DisableAutoCaptionsDesc" = "Ngăn chặn việc tự động kích hoạt phụ đề."; "DisableAutoCaptionsDesc" = "Ngăn chặn việc tự động kích hoạt chú thích.";
"NoContentWarning" = "Bỏ qua cảnh báo nội dung"; "NoContentWarning" = "Bỏ qua cảnh báo nội dung";
"NoContentWarningDesc" = "Bỏ qua thông báo cảnh báo nội dung nhạy cảm."; "NoContentWarningDesc" = "Bỏ qua thông báo cảnh báo nội dung nhạy cảm.";
"ClassicQuality" = "Chất lượng video cổ điển"; "ClassicQuality" = "Chất lượng video cổ điển";
"ClassicQualityDesc" = "Mang lại menu lựa chọn chất lượng video cổ điển."; "ClassicQualityDesc" = "Mang lại menu lựa chọn chất lượng video cổ điển.";
"ExtraSpeedOptions" = "Bổ sung tùy chọn tốc độ"; "ExtraSpeedOptions" = "Bổ sung tùy chọn tốc độ";
"ExtraSpeedOptionsDesc" = "Thêm nhiều tùy chọn tốc độ phát lại video vào menu trình phát."; "ExtraSpeedOptionsDesc" = "Thêm nhiều tùy chọn tốc độ phát video vào menu trình phát.";
"DontSnap2Chapter" = "Tắt tính năng chuyển sang tập tiếp theo"; "DontSnap2Chapter" = "Tắt tự động chuyển tới chương";
"DontSnap2ChapterDesc" = "Vô hiệu hóa việc chuyển sang tập tiếp theo bằng cử chỉ nhấn đúp."; "DontSnap2ChapterDesc" = "Tắt tính năng tự động chuyển tới chương gần nhất khi tua video.";
"RedProgressBar" = "Thanh tiến trình màu đỏ"; "RedProgressBar" = "Thanh tiến trình màu đỏ";
"RedProgressBarDesc" = "Mang lại thanh tiến trình màu đỏ."; "RedProgressBarDesc" = "Mang lại thanh tiến trình màu đỏ.";
"NoHints" = "Tắt gợi ý"; "NoHints" = "Tắt gợi ý";
"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."; "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.";
"NoFreeZoom" = "Tắt cử chỉ thu phóng"; "NoFreeZoom" = "Tắt tính năng chạm để thu phóng";
"NoFreeZoomDesc" = "Tắt các cử chỉ thu phóng mới."; "NoFreeZoomDesc" = "Tắt tính năng chạm để thu phóng";
"AutoFullscreen" = "Phát video ở chế độ toàn màn hình"; "AutoFullscreen" = "Phát video ở chế độ toàn màn hình";
"AutoFullscreenDesc" = "Tự động phát video ở chế độ toàn màn hình."; "AutoFullscreenDesc" = "Tự động phát video ở chế độ toàn màn hình.";
"ExitFullscreen" = "Thoát chế độ toàn màn hình khi hoàn tất"; "ExitFullscreen" = "Thoát chế độ toàn màn hình khi hoàn tất";
"ExitFullscreenDesc" = "Thoát khỏi chế độ toàn màn hình khi kết thúc phát video."; "ExitFullscreenDesc" = "Thoát khỏi chế độ toàn màn hình khi kết thúc phát video.";
"NoDoubleTap2Seek" = "Tắt tính năng nhấn đúp để tìm kiếm"; "NoDoubleTap2Seek" = "Tắt tình năng chạm 2 lần để tua";
"NoDoubleTap2SeekDesc" = "Tắt cử chỉ nhấn đúp để tìm kiếm."; "NoDoubleTap2SeekDesc" = "Tắt tình năng chạm 2 lần để tua";
"Tabbar" = "Thanh tab"; "Tabbar" = "Thanh tab";
"RemoveLabels" = "Xóa nhãn"; "RemoveLabels" = "Xóa nhãn";
@@ -107,8 +107,8 @@
"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."; "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.";
"ShortsToRegular" = "Từ Shorts đến video thông thường"; "ShortsToRegular" = "Từ Shorts đến video thông thường";
"ShortsToRegularDesc" = "Mở Shorts như video thông thường."; "ShortsToRegularDesc" = "Mở Shorts như video thông thường.";
"ResumeShorts" = "Đừng bắt đầu từ tab Shorts"; "ResumeShorts" = "Tắt tính năng tự động tiếp tục Shorts";
"ResumeShortsDesc" = "Ngăn chặn việc bắt đầu từ Shorts ở ứng dụng đang mở, điều này xảy ra nếu YouTube bị đóng trong khi xem Shorts."; "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.";
"HideShortsLogo" = "Ẩn biểu tượng Shorts"; "HideShortsLogo" = "Ẩn biểu tượng Shorts";
"HideShortsLogoDesc" = "Ẩn biểu tượng Shorts ở góc trên cùng bên trái."; "HideShortsLogoDesc" = "Ẩn biểu tượng Shorts ở góc trên cùng bên trái.";
"HideShortsSearch" = "Ẩn nút Tìm kiếm"; "HideShortsSearch" = "Ẩn nút Tìm kiếm";
@@ -145,18 +145,18 @@
"Other" = "Khác"; "Other" = "Khác";
"CopyVideoInfo" = "Sao chép thông tin video"; "CopyVideoInfo" = "Sao chép thông tin video";
"CopyVideoInfoDesc" = "Thêm nút để sao chép tiêu đề và mô tả video vào bảng Mô tả Video."; "CopyVideoInfoDesc" = "Thêm nút để sao chép tiêu đề và mô tả video vào bảng Mô tả Video.";
"CopyPostText" = "Sao chép văn bản bài đăng trên cộng đồng"; "PostManager" = "Lưu bài viết";
"CopyPostTextDesc" = "Sao chép văn bản bài đăng của cộng đồng vào bảng tạm bằng cách nhấn giữ."; "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ữ.";
"SavePostImage" = "Lưu hình ảnh từ bài đăng trên cộng đồng"; "SavePostImage" = "Lưu hình ảnh từ bài viết trên cộng đồng";
"SavePostImageDesc" = "Lưu hình ảnh bài đăng của cộng đồng vào ứng dụng Ảnh bằng cách nhấn giữ."; "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ữ.";
"SaveProfilePhoto" = "Lưu ảnh hồ sơ"; "SaveProfilePhoto" = "Lưu ảnh hồ sơ";
"SaveProfilePhotoDesc" = "Lưu ảnh hồ sơ vào ứng dụng Ảnh bằng cách nhấn và giữ."; "SaveProfilePhotoDesc" = "Lưu ảnh hồ sơ vào ứng dụng Ảnh bằng cách nhấn và giữ.";
"CopyCommentText" = "Sao chép văn bản bình luận"; "CommentManager" = "Save comment information";
"CopyCommentTextDesc" = "Sao chép văn bản nhận xét vào clipboard bằng cách nhấn giữ."; "CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
"FixAlbums" = "Sửa Albums"; "FixAlbums" = "Sửa Albums";
"FixAlbumsDesc" = "Sửa lỗi hiển thị Albums cho người dùng Nga."; "FixAlbumsDesc" = "Sửa lỗi hiển thị Albums cho người dùng Nga.";
"RemovePlayNext" = "Xóa \"Chơi tiếp theo trong hàng đợi\""; "RemovePlayNext" = "Xóa \"Phát tiếp theo trong danh sách chờ\"";
"RemovePlayNextDesc" = "Xóa tùy chọn \"Chơi tiếp theo trong hàng đợi\" khỏi menu."; "RemovePlayNextDesc" = "Xóa tùy chọn \"Phát tiếp theo trong danh sách chờ\" khỏi menu.";
"NoContinueWatching" = "Xóa \"Tiếp tục xem\""; "NoContinueWatching" = "Xóa \"Tiếp tục xem\"";
"NoContinueWatchingDesc" = "Xóa phần \"Tiếp tục xem\" chứa các video chưa xem hết khỏi Trang chủ."; "NoContinueWatchingDesc" = "Xóa phần \"Tiếp tục xem\" chứa các video chưa xem hết khỏi Trang chủ.";
"NoSearchHistory" = "Ẩn lịch sử tìm kiếm"; "NoSearchHistory" = "Ẩn lịch sử tìm kiếm";
@@ -165,8 +165,8 @@
"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."; "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.";
"StickSortComments" = "Dán tiêu đề bình luận"; "StickSortComments" = "Dán tiêu đề bình luậ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."; "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.";
"HideSortComments" = "Ẩn tiêu đề bình luận"; "HideSortComments" = "Ẩn bình luận";
"HideSortCommentsDesc" = "Ẩn tiêu đề nhận xét sắp xếp (Hàng đầu, Mới nhất) để nó không bao giờ xuất hiện."; "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.";
"PlaylistOldMinibar" = "Danh sách phát mini bar cũ"; "PlaylistOldMinibar" = "Danh sách phát mini bar cũ";
"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ũ."; "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ũ.";
"DisableRTL" = "Tắt định dạng RTL"; "DisableRTL" = "Tắt định dạng RTL";
@@ -206,8 +206,14 @@
"SelectAction" = "Chọn hành động"; "SelectAction" = "Chọn hành động";
"CopyTitle" = "Sao chép tiêu đề"; "CopyTitle" = "Sao chép tiêu đề";
"CopyDescription" = "Sao chép mô tả"; "CopyDescription" = "Sao chép mô tả";
"CopyPostText" = "Sao chép văn bản bài viết";
"SavePostAsImage" = "Lưu bài viết dưới dạng hình ảnh";
"CopyPostAsImage" = "Sao chép bài viết dưới dạng hình ảnh";
"CopyCommentText" = "Copy comment text";
"SaveCommentAsImage" = "Save comment as image";
"CopyCommentAsImage" = "Copy comment as image";
"Cancel" = "Hủy bỏ"; "Cancel" = "Hủy bỏ";
"Copied" = "Sao chép vào clipboard"; "Copied" = "Sao chép vào clipboard";
"Saved" = "Đã lưu vào Ảnh"; "Saved" = "Đã lưu vào Ảnh";
"Done" = "Xong"; "Done" = "Xong";
"Error" = "Lỗi"; "Error" = "Lỗi";
@@ -145,14 +145,14 @@
"Other" = "其他"; "Other" = "其他";
"CopyVideoInfo" = "复制视频信息"; "CopyVideoInfo" = "复制视频信息";
"CopyVideoInfoDesc" = "添加按钮从“视频说明”面板中复制视频的标题和描述。"; "CopyVideoInfoDesc" = "添加按钮从“视频说明”面板中复制视频的标题和描述。";
"CopyPostText" = "复制社区帖子文本"; "PostManager" = "保存帖子信息";
"CopyPostTextDesc" = "长按社区帖子文本复制到剪贴板。"; "PostManagerDesc" = "允许通过长按复制帖子文本并将帖子另存为图片。";
"SavePostImage" = "保存社区帖子图片"; "SavePostImage" = "保存社区帖子图片";
"SavePostImageDesc" = "长按社区帖子图片保存到照片应用程序。"; "SavePostImageDesc" = "长按社区帖子图片保存到照片应用程序。";
"SaveProfilePhoto" = "保存个人资料图片"; "SaveProfilePhoto" = "保存个人资料图片";
"SaveProfilePhotoDesc" = "长按个人资料图片保存到照片应用程序。"; "SaveProfilePhotoDesc" = "长按个人资料图片保存到照片应用程序。";
"CopyCommentText" = "复制评论文本"; "CommentManager" = "Save comment information";
"CopyCommentTextDesc" = "长按将评论文本复制到剪贴板。"; "CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
"FixAlbums" = "修复封面"; "FixAlbums" = "修复封面";
"FixAlbumsDesc" = "修复来自俄罗斯用户的封面显示问题。"; "FixAlbumsDesc" = "修复来自俄罗斯用户的封面显示问题。";
"RemovePlayNext" = "删除“播放队列中的下一个”"; "RemovePlayNext" = "删除“播放队列中的下一个”";
@@ -192,7 +192,7 @@
"French" = "法语本地化"; "French" = "法语本地化";
"Spanish" = "西班牙语本地化"; "Spanish" = "西班牙语本地化";
"Japanese" = "日语本地化"; "Japanese" = "日语本地化";
"Vietnamese" = "Vietnamese localization"; "Vietnamese" = "越南语本地化";
"Advanced" = "高级模式"; "Advanced" = "高级模式";
"AdvancedModeReminder" = "想为YTLite激活高级模式吗?\n\n此模式提供了50多个额外的选项来自定义和优化您的YouTube体验。\n可以稍后从设置中启用/禁用它 → %@ → %@ → %@。"; "AdvancedModeReminder" = "想为YTLite激活高级模式吗?\n\n此模式提供了50多个额外的选项来自定义和优化您的YouTube体验。\n可以稍后从设置中启用/禁用它 → %@ → %@ → %@。";
"ClearCache" = "清除缓存"; "ClearCache" = "清除缓存";
@@ -206,6 +206,12 @@
"SelectAction" = "选择操作"; "SelectAction" = "选择操作";
"CopyTitle" = "复制标题"; "CopyTitle" = "复制标题";
"CopyDescription" = "复制描述"; "CopyDescription" = "复制描述";
"CopyPostText" = "复制帖子文本";
"SavePostAsImage" = "帖子另存为图片";
"CopyPostAsImage" = "帖子作为图片复制";
"CopyCommentText" = "Copy comment text";
"SaveCommentAsImage" = "Save comment as image";
"CopyCommentAsImage" = "Copy comment as image";
"Cancel" = "取消"; "Cancel" = "取消";
"Copied" = "已复制到剪贴板"; "Copied" = "已复制到剪贴板";
"Saved" = "已保存到照片"; "Saved" = "已保存到照片";
@@ -145,14 +145,14 @@
"Other" = "其它"; "Other" = "其它";
"CopyVideoInfo" = "複製影片資訊"; "CopyVideoInfo" = "複製影片資訊";
"CopyVideoInfoDesc" = "新增按鈕將影片標題和說明,複製到影片說明欄"; "CopyVideoInfoDesc" = "新增按鈕將影片標題和說明,複製到影片說明欄";
"CopyPostText" = "複製社群貼文文字"; "PostManager" = "儲存貼文資訊";
"CopyPostTextDesc" = "長按社群貼文文字複製到剪貼簿"; "PostManagerDesc" = "長按可以複製貼文內容或將貼文儲存為圖片";
"SavePostImage" = "儲存社群貼文圖片"; "SavePostImage" = "儲存社群貼文圖片";
"SavePostImageDesc" = "長按社群貼文圖片儲存到照片應用"; "SavePostImageDesc" = "長按社群貼文圖片儲存到照片應用";
"SaveProfilePhoto" = "儲存個人檔案照片"; "SaveProfilePhoto" = "儲存個人檔案照片";
"SaveProfilePhotoDesc" = "長按個人檔案照片儲存到照片應用"; "SaveProfilePhotoDesc" = "長按個人檔案照片儲存到照片應用";
"CopyCommentText" = "複製評論文字"; "CommentManager" = "Save comment information";
"CopyCommentTextDesc" = "長按評論文字複製到剪貼簿"; "CommentManagerDesc" = "Allows to copy comment text and save comment as image by long tap.";
"FixAlbums" = "修復封面"; "FixAlbums" = "修復封面";
"FixAlbumsDesc" = "為俄羅斯使用者修復封面顯示問題"; "FixAlbumsDesc" = "為俄羅斯使用者修復封面顯示問題";
"RemovePlayNext" = "移除「播放下一個」"; "RemovePlayNext" = "移除「播放下一個」";
@@ -206,6 +206,12 @@
"SelectAction" = "選擇動作"; "SelectAction" = "選擇動作";
"CopyTitle" = "複製標題"; "CopyTitle" = "複製標題";
"CopyDescription" = "複製說明"; "CopyDescription" = "複製說明";
"CopyPostText" = "複製貼文內容";
"SavePostAsImage" = "貼文儲存為圖片";
"CopyPostAsImage" = "複製貼文為圖片";
"CopyCommentText" = "Copy comment text";
"SaveCommentAsImage" = "Save comment as image";
"CopyCommentAsImage" = "Copy comment as image";
"Cancel" = "取消"; "Cancel" = "取消";
"Copied" = "已複製到剪貼簿"; "Copied" = "已複製到剪貼簿";
"Saved" = "已儲存到照片應用"; "Saved" = "已儲存到照片應用";
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.