更新 XPMineUserInfoEditViewController 以支持 GIF 图像上传,修改视频时长检查逻辑,确保错误提示信息动态化,同时更新本地化字符串以反映视频时长的变化。

This commit is contained in:
edwinQQQ
2025-09-22 22:47:55 +08:00
parent 3a817bb947
commit 253a3480f5
10 changed files with 77 additions and 52 deletions

View File

@@ -466,17 +466,27 @@ TZImagePickerControllerDelegate>
}
}
//
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingVideo:(UIImage *)coverImage sourceAssets:(PHAsset *)asset {
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingGifImage:(UIImage *)animatedImage sourceAssets:(PHAsset *)asset {
@kWeakify(self);
dispatch_async(dispatch_get_main_queue(), ^{
@kStrongify(self);
[self showLoading];
[self processVideoAsset:asset];
[[PHImageManager defaultManager] requestImageDataForAsset:asset
options:nil
resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
[self.presenter uploadGifAvatar:imageData];
}];
[picker dismissViewControllerAnimated:YES completion:^{}];
});
}
//
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingVideo:(UIImage *)coverImage sourceAssets:(PHAsset *)asset {
[self showLoading];
[self processVideoAsset:asset];
[picker dismissViewControllerAnimated:YES completion:^{}];
}
//
- (void)processVideoAsset:(PHAsset *)asset {
@kWeakify(self);
@@ -484,10 +494,11 @@ TZImagePickerControllerDelegate>
// 5
NSTimeInterval duration = asset.duration;
if (duration > 5.0) {
dispatch_async(dispatch_get_main_queue(), ^{
dispatch_async(dispatch_get_main_queue(),
^{
@kStrongify(self);
[self hideHUD];
[self showErrorToast:YMLocalizedString(@"20.20.51_text_30")];
[self showErrorToast:[NSString stringWithFormat:YMLocalizedString(@"20.20.51_text_30"), @(5)]];
});
return;
}
@@ -719,6 +730,14 @@ TZImagePickerControllerDelegate>
model.avatarUrl = url;
}
[self.tableView reloadData];
if ([url hasSuffix:@"mp4"]) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.presenter getUserInfo];
});
[self showSuccessToast:YMLocalizedString(@"XPMineUserInfoEditViewController12")];
}else {
[self.presenter complectionInfoWithAvatar:url nick:nil birth:nil userDesc:nil];
}
}
#pragma mark - XPMineUserInfoEditPickView

View File

@@ -6,6 +6,7 @@
//
#import "XPRoomViewController.h"
#include <Foundation/NSObjCRuntime.h>
///Third
#import <Masonry/Masonry.h>
#import <NIMSDK/NIMSDK.h>
@@ -203,6 +204,7 @@ XPCandyTreeInsufficientBalanceViewDelegate>
// 🔧
@property (atomic, assign) BOOL isExitingRoom; // 退
@property (atomic, assign) BOOL isViewActive; // VC /
@property (atomic, assign) BOOL isMinimizingRoom; //
@property(nonatomic,copy) NSString *myCoins;
@property(nonatomic,strong) UIButton *exitGameButton;
@@ -312,9 +314,6 @@ XPCandyTreeInsufficientBalanceViewDelegate>
NSLog(@"🔄 XPRoomViewController: 开始销毁");
// 🔧 TRTC
[[RtcManager instance] exitRoom];
// 🔧 退
self.isExitingRoom = YES;
self.isViewActive = NO;
@@ -578,11 +577,13 @@ XPCandyTreeInsufficientBalanceViewDelegate>
// 🔧 VC
self.isViewActive = NO;
// 🔧 VC dismiss TRTC
// 🔧 VC dismiss TRTC
if (self.isMovingFromParentViewController || self.isBeingDismissed) {
if (!self.isMinimizingRoom) {
[[RtcManager instance] exitRoom];
self.isExitingRoom = YES;
}
}
//
if ([[GiftComboManager sharedManager] isActive]) {
@@ -599,11 +600,13 @@ XPCandyTreeInsufficientBalanceViewDelegate>
// 🔧
self.isViewActive = NO;
// 🔧 退 BuglyManager 退
// 🔧 退 BuglyManager 退
if (!self.isMinimizingRoom) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"RoomDidExit"
object:nil
userInfo:@{@"roomId": self.roomUid ?: @"unknown"}];
NSLog(@"🎮 房间退出通知已发送 - RoomID: %@", self.roomUid);
}
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
@@ -613,6 +616,8 @@ XPCandyTreeInsufficientBalanceViewDelegate>
// 🔧 VC
self.isViewActive = YES;
// 🔧
self.isMinimizingRoom = NO;
// 🔧 BuglyManager
[[NSNotificationCenter defaultCenter] postNotificationName:@"RoomDidEnter"
@@ -2205,13 +2210,13 @@ XPCandyTreeInsufficientBalanceViewDelegate>
case NIMChatroomEventTypeAddBlack:
case NIMChatroomEventTypeKicked:
case NIMChatroomEventTypeExit:
onLineNumber -= 1;
onLineNumber = MAX(onLineNumber - 1, 0);
// 🔧 退CPCP SVGA
if (content.source && content.source.userId.length > 0) {
NSInteger exitUid = content.source.userId.integerValue;
if (exitUid > 0) {
[self removeCpDataForUids:@[@(exitUid)]];
// CP
// CP "下麦"
NSMutableDictionary<NSString *,MicroQueueModel *> *currentQueue = [self.stageView getMicroQueue];
if (currentQueue) {
NSMutableArray<NSString *> *remainingUids = [NSMutableArray array];
@@ -3253,6 +3258,7 @@ XPCandyTreeInsufficientBalanceViewDelegate>
}
- (void)miniRoom {
self.isMinimizingRoom = YES;
if(self.freeModel != nil){
[XPRoomMiniManager shareManager].curState = self.freeModel.curStage;
}

View File

@@ -4146,7 +4146,7 @@ ineHeadView12" = "الحمل";
"20.20.51_text_27" = "١ في كل مرة تقوم فيها بتحميل صورة رمزية ديناميكية سيقوم النظام بخصم %@ عملة من حسابك. يرجى التأكد من أن رصيد حسابك كافٍ\n\n٢ عملية المراجعة: بعد اكتمال التحميل، سيدخل النظام تلقائيًا عملية المراجعة. خلال هذه الفترة، يرجى عدم تحميل صورة رمزية جديدة مرة أخرى لتجنب التأثير على تقدم المراجعة.\n\n٣ نتائج المراجعة \n\nتمت المراجعة بنجاح: ستدخل الصورة الرمزية الديناميكية الجديدة حيز التنفيذ على الفور وسيتم عرضها للمستخدمين الآخرين.\n\nفشل المراجعة: سيقوم النظام تلقائيًا برد %@ عملة أنفقتها بعد اكتمال المراجعة. في نفس الوقت، ستتلقى إشعارًا من النظام.\n\n٤ عملية لا رجعة فيها: يرجى ملاحظة أنه بمجرد مراجعة الصورة الرمزية الديناميكية ودخولها حيز التنفيذ، فلن تتمكن من استعادتها إلى الصورة الرمزية السابقة.\n";
"20.20.51_text_28" = "عرض الوقت:%@";
"20.20.51_text_29" = "يجب أن يكون عدد الماس مضاعفات %@";
"20.20.51_text_30" = "يجب ألا تتجاوز مدة الفيديو 10 ثوانٍ.";
"20.20.51_text_30" = "يجب ألا تتجاوز مدة الفيديو %@ ثوانٍ.";
"20.20.56_text_1" = "عدد المباريات الحالي غير كافٍ، فشلت المباراة. إعادة المباراة مرة أخرى؟";
"20.20.56_text_2" = "فشلت المطابقة، تم إرجاع العملات التي استهلكتها إلى محفظتك";

View File

@@ -3933,7 +3933,7 @@
"20.20.51_text_27" = "1 Each time you upload a dynamic avatar, the system will deduct %@ coins from your account. Please make sure that your account balance is sufficient.\n2 Review process: After the upload is completed, the system will automatically enter the review process. During this period, please do not upload a new avatar again to avoid affecting the review progress.\n3 Review results: \nReview passed: Your new dynamic avatar will take effect immediately and be displayed to other users.\nReview failed: The system will automatically refund the %@ coins you spent after the review is completed. At the same time, you will receive a system notification.\n4 Irreversible operation: Please note that once the dynamic avatar is reviewed and takes effect, you will not be able to restore it to the previous avatar.\n";
"20.20.51_text_28" = "View Time: %@";
"20.20.51_text_29" = "Number of diamonds needs to be multiples of %@";
"20.20.51_text_30" = "Video duration must not exceed 10 seconds.";
"20.20.51_text_30" = "Video duration must not exceed %@ seconds.";
"20.20.56_text_1" = "The current number of matches is not enough, the match failed. Re-match again?";
"20.20.56_text_2" = "Match failed, the coins you consumed has been returned to your wallet";

View File

@@ -3941,7 +3941,7 @@ Revisión fallida: El sistema reembolsará automáticamente las %@ monedas que g
";
"20.20.51_text_28" = "Hora de Vista: %@";
"20.20.51_text_29" = "El número de diamantes debe ser múltiplo de 1000";
"20.20.51_text_30" = "La duración del video no debe exceder los 10 segundos.";
"20.20.51_text_30" = "La duración del video no debe exceder los %@ segundos.";
"20.20.56_text_1" = "La cantidad actual de coincidencias no es suficiente, la coincidencia falló. ¿Volver a intentar?";
"20.20.56_text_2" = "Coincidencia fallida, las monedas que consumiste han sido devueltas a tu billetera";

View File

@@ -3229,7 +3229,7 @@
"20.20.51_text_27" = "1 Cada envio de avatar dinâmico deduz %@ moedas. Verifique seu saldo.\n2 Revisão: Após o envio, o sistema entrará em revisão. Não envie novamente para não atrasar.\n3 Resultado: \nAprovado: Seu avatar será exibido.\nReprovado: As moedas serão reembolsadas e você será notificado.\n4 Operação irreversível: Após a aprovação, não é possível reverter.";
"20.20.51_text_28" = "Horário da Visita: %@";
"20.20.51_text_29" = "O número de diamantes precisa ser múltiplo de %@";
"20.20.51_text_30" = "A duração do vídeo não pode exceder 10 segundos.";
"20.20.51_text_30" = "A duração do vídeo não pode exceder %@ segundos.";
"20.20.56_text_1" = "Número atual de correspondências insuficiente, falha na correspondência. Tentar novamente?";
"20.20.56_text_2" = "Falha na correspondência, as moedas gastas foram devolvidas à sua carteira.";

View File

@@ -201,7 +201,7 @@
"MessageCell1" = "Удалить";
"MessageCell2" = "Отозвать";
"SessionNavView0" = "Подписаться";
"SessionNavView0" = "Подписки";
"SessionNavView1" = "Уже добавлен в черный список";
"SessionChatLimitView0" = "Только пользователи с уровнем богатства ≥%zd или уровнем очарования ≥%zd могут инициировать чат";
@@ -582,12 +582,12 @@
"XPMineShareViewController0" = "Выберите друзей";
"XPMineShareViewController1" = "Вы уверены, что хотите поделиться с %@?";
"XPMineShareViewController4" = "Подписаться";
"XPMineShareViewController4" = "Подписки";
"XPMineContactViewController3" = "Подписаться";
"XPMineContactViewController3" = "Подписки";
"XPMineFansViewController0" = "Больше комнат нет";
"XPMineFansViewController1" = "Мои подписчики";
"XPMineFansViewController1" = "Мои Фаны";
"XPMineFansViewController2" = "Подписка оформлена успешно";
"XPMineFansViewController3" = "У вас еще нет фанатов";
@@ -730,7 +730,7 @@
"XPMineHeadView2" = "Неверный формат даты!!";
"XPMineHeadView3" = "Неверный формат даты!!!";
"XPMineHeadView4" = "Подписки";
"XPMineHeadView5" = "Подписчики";
"XPMineHeadView5" = "Фаны";
"XPMineHeadView6" = "Знак %@";
"XPMineHeadView7" = "На рассмотрении";
"XPMineHeadView8" = "Скопировано успешно";
@@ -770,7 +770,7 @@
"XPMineUserInfoDateView2" = "Готово";
"XPMineUserInfoDateView3" = " лет";
"XPMineUserInfoDateView4" = "Подписаться";
"XPMineUserInfoDateView4" = "Подписки";
"XPMineRechageHeadView0" = "Мои монеты";
"XPMineRechargeNavView0" = "Аккаунт";
@@ -783,7 +783,7 @@
"XPMineFriendTableViewCell0" = "Этот человек еще не установил подпись";
"XPMineFansTableViewCell0" = "Этот человек еще не установил подпись";
"XPMineFansTableViewCell1" = "+Подписаться";
"XPMineFansTableViewCell1" = "+Подписки";
"XPMineFansTableViewCell2" = "Взаимная подписка";
"XPMineAttentionTableViewCell0" = "Этот человек еще не установил подпись";
@@ -838,7 +838,7 @@
"XPMineUserInfoViewController6" = "Успешно удален из черного списка";
"XPMineUserInfoViewController7" = "Успешно добавлен в черный список";
"XPMineUserInfoViewController8" = "Чат";
"XPMineUserInfoViewController9" = "Подписаться";
"XPMineUserInfoViewController9" = "Подписки";
"XPMineUserInfoViewController10" = "Подписан";
"XPMineUserInfoViewController11" = "Профиль";
"XPMineUserInfoViewController12" = "Записи";
@@ -874,7 +874,7 @@
"XPMineSimpleUserInfoViewController7" = "Успешно удален из черного списка";
"XPMineSimpleUserInfoViewController8" = "Успешно добавлен в черный список";
"XPMineSimpleUserInfoViewController9" = "Поговорить с ними";
"XPMineSimpleUserInfoViewController10" = "Подписаться";
"XPMineSimpleUserInfoViewController10" = "Подписки";
"XPMineSimpleUserInfoViewController11" = "Подписан";
"XPMineUserInfoDesViewController0" = "Редактировать личное введение";
@@ -1045,7 +1045,7 @@
"XPMineCollectRoomListViewController9" = "Живая комната";
"XPSimpleMineHeaderView0" = "Подписан";
"XPSimpleMineHeaderView1" = "Подписчики";
"XPSimpleMineHeaderView1" = "Фаны";
"XPSimpleMineHeaderView2" = "Посетители";
"XPSimpleMineHeaderView3" = "Просмотр";
"XPSimpleMineHeaderView4" = "Мой Кошелёк";
@@ -1377,7 +1377,7 @@
"XPUserCardPresenter12" = "Очистить значение подарка";
"XPUserCardPresenter13" = "Отпр. подарок";
"XPUserCardPresenter14" = "Личный чат";
"XPUserCardPresenter15" = "Подписаться";
"XPUserCardPresenter15" = "Подписки";
"XPUserCardPresenter16" = "Подписан";
"XPUserCardPresenter17" = "Исключить";
"XPUserCardPresenter18" = "Назначить администратором";
@@ -1441,8 +1441,8 @@
"XPAnchorAudienceUpMicView2" = "Подтвердить";
"XPRoomAnchorInfoCardView0" = "Подписан";
"XPRoomAnchorInfoCardView1" = "Нажмите, чтобы подписаться, чтобы не потеряться в следующий раз при прямом эфире~";
"XPRoomAnchorInfoCardView2" = "Подписаться";
"XPRoomAnchorInfoCardView1" = "Нажмите, чтобы Подписки, чтобы не потеряться в следующий раз при прямом эфире~";
"XPRoomAnchorInfoCardView2" = "Подписки";
"XPRoomAnchorRankEnterView0" = "Почасовой";
@@ -1576,7 +1576,7 @@
"StageView26" = "Отключить звук слота";
"StageView27" = "Вытащить их на микрофон как ведущий";
"StageView28" = "Выйти с микрофона и слушать";
"StageView29" = "Подписаться";
"StageView29" = "Подписки";
"AnchorStageView1" = "Разблокировать";
"AnchorStageView3" = "Открыть микрофон";
@@ -2032,7 +2032,7 @@
"XPReceiveRedPacketView10" = "Подпишитесь на ведущего, чтобы хватить красные пакеты!";
"XPReceiveRedPacketView11" = "Поделитесь комнатой, чтобы хватить красные пакеты!";
"XPReceiveRedPacketView12" = "Отправьте Данмаки %@, чтобы хватить красные пакеты!";
"XPReceiveRedPacketView13" = "Подписаться на ведущего\nХватить красный пакет";
"XPReceiveRedPacketView13" = "Подписки на ведущего\nХватить красный пакет";
"XPReceiveRedPacketView14" = "Поделиться комнатой\nХватить красный пакет";
"XPReceiveRedPacketView15" = "Отпр. Данмаки\nХватить красный пакет";
"XPReceiveRedPacketView16" = "Не участвую\nв мероприятии";
@@ -2076,9 +2076,9 @@
"XPRoomSettingPresenter11" = "Комната заблокирована, введите пароль комнаты";
"XPRoomSettingPresenter12" = "Фон комнаты";
"XPFollowAnchorDialogView0" = "Подписаться";
"XPFollowAnchorDialogView0" = "Подписки";
"XPFollowAnchorDialogView1" = "Отписаться";
"XPFollowAnchorDialogView2" = "Подписаться";
"XPFollowAnchorDialogView2" = "Подписки";
"XPRoomExpDisplayView0" = "+%@ опыта";
"XPRoomExpDisplayView1" = "Получено опыт %@";
@@ -2140,7 +2140,7 @@
"MessageCell1" = "Удалить";
"MessageCell2" = "Отозвать";
"SessionNavView0" = "Подписаться";
"SessionNavView0" = "Подписки";
"SessionNavView1" = "Уже в черном списке";
"SessionChatLimitView0" = "Только пользователи с уровнем благосостояния ≥ %zd или уровнем обаяния ≥ %zd могут начать чат";
@@ -3428,7 +3428,7 @@
"XPSessionMainViewController0" = "Сообщ.";
"XPSessionMainViewController1" = "Друзья";
"XPSessionMainViewController2" = "Подп.";
"XPSessionMainViewController3" = "Подписчики";
"XPSessionMainViewController3" = "Фаны";
///XPFreeGiftsObtainView
"XPFreeGiftsObtainView0"="Понятно";
"XPFreeGiftsObtainView1"="Сегодня смотрели прямой эфир в течение %@, даём вам подарок";
@@ -3735,7 +3735,7 @@
"RoomSetting_1.0.17_0" = "Аватар комнаты";
"VipSettin_1.0.17_0" = "Настройки VIP";
"VipSettin_1.0.17_1" = "Привилегия VIP";
"VipSettin_1.0.17_2" = "Нельзя подписаться";
"VipSettin_1.0.17_2" = "Нельзя Подписки";
"VipSettin_1.0.17_3" = "Анти-вход в комнату";
"VipSettin_1.0.17_4" = "Невидимость";
"VipSettin_1.0.17_5" = "Анти-кик";
@@ -3930,7 +3930,7 @@
"20.20.51_text_27" = "1 Каждый раз, когда вы загружаете динамический аватар, система списывает %@ монет с вашего аккаунта. Пожалуйста, убедитесь, что баланс вашего аккаунта достаточен.\n2 Процесс проверки: После завершения загрузки система автоматически переходит в процесс проверки. В это время не загружайте новый аватар, чтобы не повлиять на прогресс проверки.\n3 Результаты проверки:\nПроверка пройдена: Ваш новый динамический аватар вступит в силу немедленно и будет отображаться другим пользователям.\nПроверка не пройдена: После завершения проверки система автоматически вернет вам потраченные %@ монеты. В то же время вы получите системное уведомление.\n4 Нереверсивная операция: Пожалуйста, обратите внимание, что после проверки и вступления в силу динамический аватар вы не сможете восстановить предыдущий аватар.\n";
"20.20.51_text_28" = "Время просмотра: %@";
"20.20.51_text_29" = "Количество алмазов должно быть кратно 1000";
"20.20.51_text_30" = "Продолжительность видео не должна превышать 10 сек..";
"20.20.51_text_30" = "Продолжительность видео не должна превышать %@ сек..";
"20.20.56_text_1" = "Текущее количество матчей недостаточно, матч не удался. Сыграть снова?";
"20.20.56_text_2" = "Матч не удался, потраченные вами монеты возвращены в Кошелёк";
@@ -3953,14 +3953,14 @@
"20.20.56_text_19" = "Отклонено";
"20.20.56_text_20" = "Другая сторона отклоняет ваше приглашение изменить отношения.";
"20.20.59_text_1" = "Центр событий";
"20.20.59_text_1" = "Центр ивентов";
"20.20.59_text_2" = "Официально";
"20.20.59_text_3" = "Площадь событий";
"20.20.59_text_4" = "Мои события";
"20.20.59_text_5" = " Подписаться";
"20.20.59_text_3" = "Площадь";
"20.20.59_text_4" = "Мои ивенты";
"20.20.59_text_5" = " Подписки";
"20.20.59_text_6" = " Отписаться";
"20.20.59_text_7" = " Принять участие";
"20.20.59_text_8" = "Создать событие";
"20.20.59_text_8" = "Создать ивент";
"20.20.59_text_9" = "Название события";
"20.20.59_text_10" = "Баннер события(Лучший размер:690*236) ";
"20.20.59_text_11" = "Загрузить баннер на главную страницу(Стоимость %@)";
@@ -3978,7 +3978,7 @@
"20.20.59_text_23" = "Отображаются только данные за последние 30 дней ";
"20.20.59_text_24" = "Событие начинается";
"20.20.59_text_25" = "Событие закончилось";
"20.20.59_text_26" = "Ваше событие скоро начнется! Ваши фанаты и подписчики были уведомлены!";
"20.20.59_text_26" = "Ваше событие скоро начнется! Ваши фанаты и Фаны были уведомлены!";
"20.20.59_text_27" = "Событие, на которое вы подписались, скоро начнется — нажмите, чтобы присоединиться сейчас!!!";
"20.20.59_text_28.1" = "Вы уверены, что хотите удалить свое событие?";
"20.20.59_text_28.2" = "После удаления событие невозможно начать!\nПожалуйста, будьте осторожны!!!\nСобытие будет удалено с площади.\nПотраченные на баннер монеты не будут возвращены!\n";

View File

@@ -3727,7 +3727,7 @@
"20.20.51_text_27" = "1 Her dinamik avatar yüklediğinizde, sistem hesabınızdan %@ jeton düşecektir. Lütfen hesap bakiyenizin yeterli olduğundan emin olun.\n2 İnceleme süreci: Yükleme tamamlandıktan sonra, sistem otomatik olarak inceleme sürecine girecektir. Bu süre zarfında, inceleme ilerlemesini etkilememek için lütfen tekrar yeni bir avatar yüklemeyin.\n3 İnceleme sonuçları: \nİnceleme geçti: Yeni dinamik avatarınız hemen yürürlüğe girecek ve diğer kullanıcılara gösterilecektir.\nİnceleme başarısız oldu: Sistem, inceleme tamamlandıktan sonra harcadığınız %@ jetonu otomatik olarak iade edecektir. Aynı zamanda, bir sistem bildirimi alacaksınız.\n4 Geri alınamaz işlem: Lütfen dinamik avatar incelendikten ve yürürlüğe girdikten sonra, onu önceki avatarınıza geri yükleyemeyeceğinizi unutmayın.\n";
"20.20.51_text_28" = "Görüntüleme Süresi: %@";
"20.20.51_text_29" = "Elmas sayısının %@ katları olması gerekir";
"20.20.51_text_30" = "Video süresi 10 saniyeyi geçemez.";
"20.20.51_text_30" = "Video süresi %@ saniyeyi geçemez.";
"20.20.56_text_1" = "Mevcut eşleşme sayısı yeterli değil, eşleşme başarısız oldu. Tekrar eşleşelim mi?";
"20.20.56_text_2" = "Eşleşme başarısız oldu, harcadığınız jetonlar cüzdanınıza iade edildi";

View File

@@ -3901,7 +3901,7 @@ Tasdiqlangandan so'ng, sekretar sizga uni chop etishda yordam beradi va sizni xa
"20.20.51_text_27" = "1 Har safar dinamik avatar yuklanganda, tizim hisobingizdan %@ tanga ayirib oladi. Iltimos, hisobingizning balansi etarli ekanligiga ishonch hosil qiling.\n2 Tekshirish jarayoni: Yuklash tugagandan so'ng, tizim avtomatik ravishda tekshirish jarayoniga kiradi. Bu vaqt ichida, qayta tekshirish jarayoniga ta'sir qilmaslik uchun, yangi avatarni yana yuklamang.\n3 Tekshirish natijalari: \nTekshiruv muvaffaqiyatli: Yangi dinamik avatariz darhol kuchga kiradi va boshqa foydalanuvchilarga ko'rsatiladi.\nTekshiruv muvaffaqiyatsiz: Tekshiruv tugagandan so'ng, tizim sarflangan %@ tangalarni avtomatik ravishda qaytaradi. Shu bilan birga, siz tizim xabarnomasini olasiz.\n4 Qaytarilmaydigan operatsiya: E'tibor bering, dinamik avatar tekshirib olingan va kuchga kiritilganidan keyin, uni oldingi avatarga qaytarib bo'lmaydi.\n";
"20.20.51_text_28" = "Ko'rish vaqti: %@";
"20.20.51_text_29" = "Almazlar soni 1000 ning multiplei bo'lishi kerak";
"20.20.51_text_30" = "Video davomiyligi 10 soniyadan oshmasligi kerak.";
"20.20.51_text_30" = "Video davomiyligi %@ soniyadan oshmasligi kerak.";
"20.20.56_text_1" = "Joriy mosliklar soni etarli emas, moslik muvaffaqiyatsiz tugadi. Qayta moslashasizmi?";
"20.20.56_text_2" = "Moslik muvaffaqiyatsiz tugadi, sarflangan tangalar hamyoningizga qaytarildi";

View File

@@ -3597,7 +3597,7 @@
"20.20.51_text_27" = "1 每次上傳動態頭像,系統都會從您的帳戶中扣除%@金幣。請確保您的帳戶餘額充足。\n2 審核流程:上傳完成後,系統自動進入審核流程。在此期間,請勿再次上傳新頭像,以免影響審核進度。\n3 審核結果: \n審核通過您的新動態頭像將立即生效並顯示給其他使用者。\n審核失敗審核完成後系統將自動退還您花費的%@金幣。同時,您也會收到系統通知。\n4 不可逆操作:請注意,動態頭像一旦審核並生效,將無法恢復為先前的頭像。\n";
"20.20.51_text_28" = "访客時間:%@";
"20.20.51_text_29" = "鑽石數量需要是 %@ 的倍數";
"20.20.51_text_30" = "視頻時長不能超過 10 秒";
"20.20.51_text_30" = "視頻時長不能超過 %@ 秒";
"20.20.56_text_1" = "目前的匹配次數不足,匹配失敗。再次匹配?";
"20.20.56_text_2" = "匹配失敗,您消耗的硬幣已返回您的錢包";