From 90360448a1ae0e96c91ca9347dd48237eaf96f99 Mon Sep 17 00:00:00 2001 From: edwinQQQ Date: Wed, 15 Oct 2025 19:11:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BB=9F=E4=B8=80=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E4=B8=BA=20"E-Party"=20=E5=B9=B6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=9B=B8=E5=85=B3=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 主要变更: 1. 在 Info.plist 中将应用名称和描述中的 "E-Parti" 替换为 "E-Party"。 2. 更新多个本地化字符串和提示信息,确保一致性。 3. 修改部分代码中的错误提示信息,使用本地化字符串替代硬编码文本。 此更新旨在提升品牌一致性,确保用户在使用过程中获得统一的体验。 --- YuMi.xcodeproj/project.pbxproj | 5 +- YuMi/E-P/Common/EPImageUploader.swift | 2 +- YuMi/E-P/Common/EPProgressHUD.swift | 34 +++- YuMi/E-P/Common/EPSDKManager.swift | 8 +- .../Controllers/EPLoginViewController.swift | 16 +- YuMi/E-P/NewLogin/Models/EPLoginConfig.swift | 6 +- .../NewLogin/Services/EPLoginService.swift | 24 +-- YuMi/E-P/NewLogin/Views/EPPolicyLabel.swift | 26 ++- .../EPEditSettingViewController.swift | 22 +-- YuMi/E-P/NewMine/Views/EPMineHeaderView.m | 84 ++++++++- .../EPMomentPublishViewController.m | 7 +- .../Controllers/EPMomentViewController.m | 8 +- .../Services/EPMomentAPISwiftHelper.swift | 10 +- YuMi/E-P/NewMoments/Views/EPMomentCell.m | 57 ++++-- YuMi/E-P/NewMoments/Views/EPMomentListView.m | 14 +- YuMi/E-P/NewTabBar/EPTabBarController.swift | 14 +- YuMi/Info.plist | 12 +- .../NewLogin/XPLoginPhoneViewController.m | 2 +- YuMi/Tools/Share/ShareHelder.m | 6 +- YuMi/Tools/Share/ShareProvider.m | 2 +- YuMi/ar.lproj/Localizable.strings | 12 +- YuMi/en.lproj/InfoPlist.strings | 8 +- YuMi/en.lproj/Localizable.strings | 164 +++++++++++++++++- YuMi/es.lproj/InfoPlist.strings | 8 +- YuMi/es.lproj/Localizable.strings | 18 +- YuMi/pt-BR.lproj/InfoPlist.strings | 8 +- YuMi/pt-BR.lproj/Localizable.strings | 18 +- YuMi/ru.lproj/InfoPlist.strings | 8 +- YuMi/ru.lproj/Localizable.strings | 18 +- YuMi/tr.lproj/InfoPlist.strings | 8 +- YuMi/tr.lproj/Localizable.strings | 16 +- YuMi/uz-UZ.lproj/InfoPlist.strings | 8 +- YuMi/uz-UZ.lproj/Localizable.strings | 18 +- YuMi/zh-Hant.lproj/InfoPlist.strings | 8 +- YuMi/zh-Hant.lproj/Localizable.strings | 16 +- 35 files changed, 498 insertions(+), 197 deletions(-) diff --git a/YuMi.xcodeproj/project.pbxproj b/YuMi.xcodeproj/project.pbxproj index 8be1815..b4f5931 100644 --- a/YuMi.xcodeproj/project.pbxproj +++ b/YuMi.xcodeproj/project.pbxproj @@ -13560,7 +13560,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 7DB00EC07F1D0ADFF900B38D /* Pods-YuMi.debug.xcconfig */; buildSettings = { - APP_DISPLAY_NAME = "E-Parti DEBUG"; + APP_DISPLAY_NAME = "E-Party DEBUG"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = YuMi/YuMi.entitlements; @@ -13810,6 +13810,7 @@ SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OBJC_BRIDGING_HEADER = "YuMi/YuMi-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -13821,7 +13822,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = B66633E061B1B34177CD011C /* Pods-YuMi.release.xcconfig */; buildSettings = { - APP_DISPLAY_NAME = "E-Parti"; + APP_DISPLAY_NAME = "E-Party"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = YuMi/YuMiRelease.entitlements; diff --git a/YuMi/E-P/Common/EPImageUploader.swift b/YuMi/E-P/Common/EPImageUploader.swift index fa64aa2..98995bc 100644 --- a/YuMi/E-P/Common/EPImageUploader.swift +++ b/YuMi/E-P/Common/EPImageUploader.swift @@ -58,7 +58,7 @@ class EPImageUploader { lock.unlock() semaphore.signal() DispatchQueue.main.async { - failure("图片压缩失败") + failure(YMLocalizedString("error.image_compress_failed")) } return } diff --git a/YuMi/E-P/Common/EPProgressHUD.swift b/YuMi/E-P/Common/EPProgressHUD.swift index e12059b..fcad5d3 100644 --- a/YuMi/E-P/Common/EPProgressHUD.swift +++ b/YuMi/E-P/Common/EPProgressHUD.swift @@ -35,13 +35,13 @@ import Foundation if let hud = currentHUD { // 更新现有 HUD - hud.label.text = "上传中 \(uploaded)/\(total)" + hud.label.text = String(format: YMLocalizedString("upload.progress_format"), uploaded, total) hud.progress = Float(uploaded) / Float(total) } else { // 创建新 HUD let hud = MBProgressHUD.showAdded(to: window, animated: true) hud.mode = .determinateHorizontalBar - hud.label.text = "上传中 \(uploaded)/\(total)" + hud.label.text = String(format: YMLocalizedString("upload.progress_format"), uploaded, total) hud.progress = Float(uploaded) / Float(total) hud.removeFromSuperViewOnHide = true currentHUD = hud @@ -49,6 +49,36 @@ import Foundation } } + /// 显示错误提示 + /// - Parameter message: 错误信息 + @objc static func showError(_ message: String) { + DispatchQueue.main.async { + guard let window = keyWindow else { return } + + let hud = MBProgressHUD.showAdded(to: window, animated: true) + hud.mode = .text + hud.label.text = message + hud.label.numberOfLines = 0 + hud.removeFromSuperViewOnHide = true + hud.hide(animated: true, afterDelay: 2.0) + } + } + + /// 显示成功提示 + /// - Parameter message: 成功信息 + @objc static func showSuccess(_ message: String) { + DispatchQueue.main.async { + guard let window = keyWindow else { return } + + let hud = MBProgressHUD.showAdded(to: window, animated: true) + hud.mode = .text + hud.label.text = message + hud.label.numberOfLines = 0 + hud.removeFromSuperViewOnHide = true + hud.hide(animated: true, afterDelay: 2.0) + } + } + /// 关闭 HUD @objc static func dismiss() { DispatchQueue.main.async { diff --git a/YuMi/E-P/Common/EPSDKManager.swift b/YuMi/E-P/Common/EPSDKManager.swift index be7c20f..4b4f27a 100644 --- a/YuMi/E-P/Common/EPSDKManager.swift +++ b/YuMi/E-P/Common/EPSDKManager.swift @@ -65,7 +65,7 @@ import Foundation ensureQCloudReady { [weak self] isReady, errorMsg in guard let self = self, isReady else { DispatchQueue.main.async { - failure(errorMsg ?? "QCloud 初始化失败") + failure(errorMsg ?? YMLocalizedString("error.qcloud_init_failed")) } return } @@ -164,7 +164,7 @@ import Foundation self.qcloudInitCallbacks.removeAll() self.lock.unlock() - let errorMsg = msg ?? "获取 QCloud 配置失败" + let errorMsg = msg ?? YMLocalizedString("error.qcloud_config_failed") DispatchQueue.main.async { callbacks.forEach { $0(false, errorMsg) } } @@ -209,7 +209,7 @@ import Foundation ) { guard let config = qcloudConfig else { let error = NSError(domain: "com.yumi.qcloud", code: -1, - userInfo: [NSLocalizedDescriptionKey: "QCloud 配置未初始化"]) + userInfo: [NSLocalizedDescriptionKey: YMLocalizedString("error.qcloud_config_not_initialized")]) compelete(nil, error) return } @@ -235,7 +235,7 @@ import Foundation ) { guard let config = qcloudConfig else { let error = NSError(domain: "com.yumi.qcloud", code: -1, - userInfo: [NSLocalizedDescriptionKey: "QCloud 配置未初始化"]) + userInfo: [NSLocalizedDescriptionKey: YMLocalizedString("error.qcloud_config_not_initialized")]) continueBlock(nil, error) return } diff --git a/YuMi/E-P/NewLogin/Controllers/EPLoginViewController.swift b/YuMi/E-P/NewLogin/Controllers/EPLoginViewController.swift index 03d0d0a..5f95010 100644 --- a/YuMi/E-P/NewLogin/Controllers/EPLoginViewController.swift +++ b/YuMi/E-P/NewLogin/Controllers/EPLoginViewController.swift @@ -33,6 +33,14 @@ import UIKit override func viewDidLoad() { super.viewDidLoad() + + // 验证 DEBUG 编译条件 + #if DEBUG + print("✅ [EPLogin] DEBUG 模式已激活") + #else + print("⚠️ [EPLogin] 当前为 Release 模式") + #endif + navigationController?.setNavigationBarHidden(true, animated: false) setupUI() loadPolicyStatus() @@ -76,9 +84,9 @@ import UIKit make.height.equalTo(EPLoginConfig.Layout.logoHeight) } - // E-PARTI 标题 + // E-PARTY 标题 view.addSubview(epartiTitleLabel) - epartiTitleLabel.text = "E-PARTI" + epartiTitleLabel.text = "E-PARTY" epartiTitleLabel.font = .systemFont(ofSize: EPLoginConfig.Layout.epartiTitleFontSize, weight: .bold) epartiTitleLabel.textColor = EPLoginConfig.Colors.textLight epartiTitleLabel.transform = CGAffineTransform(a: 1, b: 0, c: -0.2, d: 1, tx: 0, ty: 0) // 斜体效果 @@ -160,6 +168,7 @@ import UIKit } private func setupNavigationBar() { +#if DEBUG view.addSubview(feedbackButton) feedbackButton.setTitle(YMLocalizedString(EPLoginConfig.LocalizedKeys.feedback), for: .normal) feedbackButton.titleLabel?.font = .systemFont(ofSize: EPLoginConfig.Layout.smallFontSize) @@ -173,7 +182,6 @@ import UIKit make.height.equalTo(EPLoginConfig.Layout.feedbackButtonHeight) } - #if DEBUG view.addSubview(debugButton) debugButton.setTitle("切换环境", for: .normal) debugButton.setTitleColor(.blue, for: .normal) @@ -183,7 +191,7 @@ import UIKit make.leading.equalToSuperview().offset(EPLoginConfig.Layout.compactHorizontalPadding) make.top.equalTo(view.safeAreaLayoutGuide).offset(8) } - #endif +#endif // DEBUG } // MARK: - Actions diff --git a/YuMi/E-P/NewLogin/Models/EPLoginConfig.swift b/YuMi/E-P/NewLogin/Models/EPLoginConfig.swift index 1191fbf..d2f7cce 100644 --- a/YuMi/E-P/NewLogin/Models/EPLoginConfig.swift +++ b/YuMi/E-P/NewLogin/Models/EPLoginConfig.swift @@ -39,11 +39,11 @@ struct EPLoginConfig { /// Logo 距离顶部的距离 static let logoTopOffset: CGFloat = 80 - /// E-PARTI 标题字号 + /// E-PARTY 标题字号 static let epartiTitleFontSize: CGFloat = 56 - /// E-PARTI 标题距离 view leading + /// E-PARTY 标题距离 view leading static let epartiTitleLeading: CGFloat = 40 - /// E-PARTI 标题距离 logoImage bottom 的偏移(负值表示向上) + /// E-PARTY 标题距离 logoImage bottom 的偏移(负值表示向上) static let epartiTitleBottomOffset: CGFloat = -30 /// 输入框之间的垂直间距 diff --git a/YuMi/E-P/NewLogin/Services/EPLoginService.swift b/YuMi/E-P/NewLogin/Services/EPLoginService.swift index 9ee2218..980f509 100644 --- a/YuMi/E-P/NewLogin/Services/EPLoginService.swift +++ b/YuMi/E-P/NewLogin/Services/EPLoginService.swift @@ -36,10 +36,10 @@ import Foundation AccountInfoStorage.instance().saveAccountInfo(accountModel) completion(accountModel) } else { - failure(Int(code), "账号信息解析失败") + failure(Int(code), YMLocalizedString("error.account_parse_failed")) } } else { - failure(Int(code), "操作失败") + failure(Int(code), YMLocalizedString("error.operation_failed")) } } @@ -61,10 +61,10 @@ import Foundation let ticket = firstTicket["ticket"] as? String { completion(ticket) } else { - failure(Int(code), "Ticket 解析失败") + failure(Int(code), YMLocalizedString("error.ticket_parse_failed")) } } else { - failure(Int(code), msg ?? "请求 Ticket 失败") + failure(Int(code), msg ?? YMLocalizedString("error.request_ticket_failed")) } }, access_token: accessToken, issue_type: "multi") } @@ -89,7 +89,7 @@ import Foundation if code == 200 { completion() } else { - failure(Int(code), msg ?? "发送邮箱验证码失败") + failure(Int(code), msg ?? YMLocalizedString("error.send_email_code_failed")) } }, emailAddress: encryptedEmail, type: NSNumber(value: type)) } @@ -114,7 +114,7 @@ import Foundation if code == 200 { completion() } else { - failure(Int(code), msg ?? "发送手机验证码失败") + failure(Int(code), msg ?? YMLocalizedString("error.send_phone_code_failed")) } }, mobile: encryptedPhone, type: String(type), phoneAreaCode: areaCode) } @@ -142,7 +142,7 @@ import Foundation code: Int64(code), completion: completion, failure: { errorCode, _ in - failure(errorCode, msg ?? "登录失败") + failure(errorCode, msg ?? YMLocalizedString("error.login_failed")) }) }, phone: encryptedId, @@ -173,7 +173,7 @@ import Foundation code: Int64(code), completion: completion, failure: { errorCode, _ in - failure(errorCode, msg ?? "登录失败") + failure(errorCode, msg ?? YMLocalizedString("error.login_failed")) }) }, email: encryptedEmail, @@ -206,7 +206,7 @@ import Foundation code: Int64(code), completion: completion, failure: { errorCode, _ in - failure(errorCode, msg ?? "登录失败") + failure(errorCode, msg ?? YMLocalizedString("error.login_failed")) }) }, phone: encryptedPhone, @@ -241,7 +241,7 @@ import Foundation if code == 200 { completion() } else { - failure(Int(code), msg ?? "重置密码失败") + failure(Int(code), msg ?? YMLocalizedString("error.reset_password_failed")) } }, email: encryptedEmail, newPwd: encryptedPassword, code: code) } @@ -269,7 +269,7 @@ import Foundation if code == 200 { completion() } else { - failure(Int(code), msg ?? "重置密码失败") + failure(Int(code), msg ?? YMLocalizedString("error.reset_password_failed")) } }, phone: encryptedPhone, newPwd: encryptedPassword, smsCode: code, phoneAreaCode: areaCode) } @@ -293,7 +293,7 @@ import Foundation code: Int64(code), completion: completion, failure: { errorCode, _ in - failure(errorCode, msg ?? "快速登录失败") + failure(errorCode, msg ?? YMLocalizedString("error.quick_login_failed")) }) }, accessToken: accessToken, diff --git a/YuMi/E-P/NewLogin/Views/EPPolicyLabel.swift b/YuMi/E-P/NewLogin/Views/EPPolicyLabel.swift index 66ecbf1..ed48d0c 100644 --- a/YuMi/E-P/NewLogin/Views/EPPolicyLabel.swift +++ b/YuMi/E-P/NewLogin/Views/EPPolicyLabel.swift @@ -89,13 +89,35 @@ class EPPolicyLabel: UILabel { textContainer.lineFragmentPadding = 0 textContainer.maximumNumberOfLines = numberOfLines + textContainer.lineBreakMode = lineBreakMode let locationOfTouchInLabel = gesture.location(in: self) let textBoundingBox = layoutManager.usedRect(for: textContainer) - let textContainerOffset = CGPoint(x: (bounds.width - textBoundingBox.width) / 2, - y: (bounds.height - textBoundingBox.height) / 2) + + // 根据 textAlignment 计算偏移 + var textContainerOffset = CGPoint.zero + switch textAlignment { + case .left, .natural, .justified: + textContainerOffset = CGPoint(x: 0, y: (bounds.height - textBoundingBox.height) / 2) + case .center: + textContainerOffset = CGPoint(x: (bounds.width - textBoundingBox.width) / 2, + y: (bounds.height - textBoundingBox.height) / 2) + case .right: + textContainerOffset = CGPoint(x: bounds.width - textBoundingBox.width, + y: (bounds.height - textBoundingBox.height) / 2) + @unknown default: + textContainerOffset = CGPoint(x: 0, y: (bounds.height - textBoundingBox.height) / 2) + } + let locationOfTouchInTextContainer = CGPoint(x: locationOfTouchInLabel.x - textContainerOffset.x, y: locationOfTouchInLabel.y - textContainerOffset.y) + + // 确保点击在文本区域内 + guard textBoundingBox.contains(locationOfTouchInTextContainer) else { + print("[EPPolicyLabel] Tap outside text bounds") + return + } + let indexOfCharacter = layoutManager.characterIndex(for: locationOfTouchInTextContainer, in: textContainer, fractionOfDistanceBetweenInsertionPoints: nil) diff --git a/YuMi/E-P/NewMine/Controllers/EPEditSettingViewController.swift b/YuMi/E-P/NewMine/Controllers/EPEditSettingViewController.swift index 6906eab..e89c69b 100644 --- a/YuMi/E-P/NewMine/Controllers/EPEditSettingViewController.swift +++ b/YuMi/E-P/NewMine/Controllers/EPEditSettingViewController.swift @@ -338,7 +338,7 @@ class EPEditSettingViewController: BaseViewController { self?.hideHUD() // 显示错误提示 - let errorMsg = msg ?? "昵称更新失败,请稍后重试" + let errorMsg = msg ?? YMLocalizedString("setting.nickname_update_failed") self?.showErrorToast(errorMsg) print("[EPEditSetting] 昵称更新失败: \(code) - \(errorMsg)") @@ -453,7 +453,7 @@ extension EPEditSettingViewController: UITableViewDataSource, UITableViewDelegat // 添加用户昵称标签 let nicknameLabel = UILabel() - nicknameLabel.text = userInfo?.nick ?? "未设置" + nicknameLabel.text = userInfo?.nick ?? YMLocalizedString("user.not_set") nicknameLabel.textColor = .lightGray nicknameLabel.font = UIFont.systemFont(ofSize: 16) cell.contentView.addSubview(nicknameLabel) @@ -576,8 +576,8 @@ extension EPEditSettingViewController: UIImagePickerControllerDelegate, UINaviga // 显示错误提示 DispatchQueue.main.async { - let alert = UIAlertController(title: "上传失败", message: errorMsg, preferredStyle: .alert) - alert.addAction(UIAlertAction(title: "确定", style: .default)) + let alert = UIAlertController(title: YMLocalizedString("common.upload_failed"), message: errorMsg, preferredStyle: .alert) + alert.addAction(UIAlertAction(title: YMLocalizedString("common.confirm"), style: .default)) self?.present(alert, animated: true) } } @@ -599,13 +599,13 @@ extension EPEditSettingViewController: UIImagePickerControllerDelegate, UINaviga print("[EPEditSetting] 头像更新失败: \(code) - \(msg ?? "未知错误")") // 显示错误提示 - DispatchQueue.main.async { - let alert = UIAlertController( - title: "更新失败", - message: msg ?? "头像更新失败,请稍后重试", - preferredStyle: .alert - ) - alert.addAction(UIAlertAction(title: "确定", style: .default)) + DispatchQueue.main.async { + let alert = UIAlertController( + title: YMLocalizedString("common.update_failed"), + message: msg ?? YMLocalizedString("setting.avatar_update_failed"), + preferredStyle: .alert + ) + alert.addAction(UIAlertAction(title: YMLocalizedString("common.confirm"), style: .default)) self?.present(alert, animated: true) } }) diff --git a/YuMi/E-P/NewMine/Views/EPMineHeaderView.m b/YuMi/E-P/NewMine/Views/EPMineHeaderView.m index ccd14d5..9908d19 100644 --- a/YuMi/E-P/NewMine/Views/EPMineHeaderView.m +++ b/YuMi/E-P/NewMine/Views/EPMineHeaderView.m @@ -16,6 +16,9 @@ /// 头像视图 @property (nonatomic, strong) UIImageView *avatarImageView; +/// 呼吸光晕层 +@property (nonatomic, strong) CALayer *glowLayer; + /// 昵称标签 @property (nonatomic, strong) UILabel *nicknameLabel; @@ -36,13 +39,21 @@ return self; } +- (void)layoutSubviews { + [super layoutSubviews]; + + // 更新光晕层 frame(跟随头像位置) + if (self.glowLayer) { + self.glowLayer.frame = CGRectInset(self.avatarImageView.frame, -8, -8); + } +} + - (void)setupUI { // 大圆形头像 self.avatarImageView = [[UIImageView alloc] init]; self.avatarImageView.layer.cornerRadius = 60; self.avatarImageView.layer.masksToBounds = NO; // 改为 NO 以显示阴影 - self.avatarImageView.layer.borderWidth = 3; - self.avatarImageView.layer.borderColor = [UIColor whiteColor].CGColor; + self.avatarImageView.layer.borderWidth = 0; // 移除边框 self.avatarImageView.backgroundColor = [UIColor whiteColor]; self.avatarImageView.contentMode = UIViewContentModeScaleAspectFill; @@ -100,7 +111,7 @@ - (void)updateWithUserInfo:(NSDictionary *)userInfoDict { // 更新昵称 - NSString *nickname = userInfoDict[@"nickname"] ?: @"未设置昵称"; + NSString *nickname = userInfoDict[@"nickname"] ?: YMLocalizedString(@"user.nickname_not_set"); self.nicknameLabel.text = nickname; // 更新 ID @@ -129,9 +140,8 @@ // 有专属颜色,使用该颜色 UIColor *color = [self colorFromHex:signatureColor]; - // 设置边框颜色 - self.avatarImageView.layer.borderColor = color.CGColor; - self.avatarImageView.layer.borderWidth = 4; // 稍微加粗边框 + // 取消边框 + self.avatarImageView.layer.borderWidth = 0; // 设置阴影(使用情绪颜色) self.avatarImageView.layer.shadowColor = color.CGColor; @@ -140,19 +150,75 @@ self.avatarImageView.layer.shadowRadius = 12; NSLog(@"[EPMineHeaderView] 应用专属颜色: %@", signatureColor); + + // 应用呼吸光晕动效 ⭐ + [self applyBreathingGlow]; } else { - // 没有专属颜色,使用默认白色边框 - self.avatarImageView.layer.borderColor = [UIColor whiteColor].CGColor; - self.avatarImageView.layer.borderWidth = 3; + // 没有专属颜色,保持无边框 + self.avatarImageView.layer.borderWidth = 0; // 默认轻微阴影 self.avatarImageView.layer.shadowColor = [UIColor blackColor].CGColor; self.avatarImageView.layer.shadowOffset = CGSizeMake(0, 2); self.avatarImageView.layer.shadowOpacity = 0.2; self.avatarImageView.layer.shadowRadius = 8; + + // 移除光晕层 + if (self.glowLayer) { + [self.glowLayer removeFromSuperlayer]; + self.glowLayer = nil; + } } } +/// 应用呼吸光晕动效 +- (void)applyBreathingGlow { + NSString *signatureColor = [EPEmotionColorStorage userSignatureColor]; + if (!signatureColor) return; + + UIColor *color = [self colorFromHex:signatureColor]; + + // 创建光晕层(如果不存在) + if (!self.glowLayer) { + self.glowLayer = [CALayer layer]; + self.glowLayer.frame = CGRectInset(self.avatarImageView.frame, -8, -8); // 比头像大 16pt + self.glowLayer.cornerRadius = 68; // 头像 60 + 扩展 8 + self.glowLayer.backgroundColor = [color colorWithAlphaComponent:0.75].CGColor; // 大幅加深 + + // 插入到头像 layer 下方 + [self.layer insertSublayer:self.glowLayer below:self.avatarImageView.layer]; + } else { + // 更新颜色 + self.glowLayer.backgroundColor = [color colorWithAlphaComponent:0.75].CGColor; // 大幅加深 + } + + // 移除旧动画 + [self.glowLayer removeAllAnimations]; + + // 创建呼吸动画组 + CAAnimationGroup *breathingGroup = [CAAnimationGroup animation]; + breathingGroup.duration = 1.8; // 加速 + breathingGroup.repeatCount = HUGE_VALF; // 无限循环 + breathingGroup.autoreverses = YES; + breathingGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + + // 动画 1:透明度变化(呼吸亮度) + CABasicAnimation *opacityAnim = [CABasicAnimation animationWithKeyPath:@"opacity"]; + opacityAnim.fromValue = @(0.65); + opacityAnim.toValue = @(1.0); // 接近完全不透明,颜色饱和 + + // 动画 2:缩放变化(呼吸扩散) + CABasicAnimation *scaleAnim = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; + scaleAnim.fromValue = @(1.0); + scaleAnim.toValue = @(1.1); + + breathingGroup.animations = @[opacityAnim, scaleAnim]; + + [self.glowLayer addAnimation:breathingGroup forKey:@"breathing"]; + + NSLog(@"[EPMineHeaderView] 启动呼吸光晕动效"); +} + /// Hex 转 UIColor - (UIColor *)colorFromHex:(NSString *)hexString { unsigned rgbValue = 0; diff --git a/YuMi/E-P/NewMoments/Controllers/EPMomentPublishViewController.m b/YuMi/E-P/NewMoments/Controllers/EPMomentPublishViewController.m index 1b67b4d..dc0a8bb 100644 --- a/YuMi/E-P/NewMoments/Controllers/EPMomentPublishViewController.m +++ b/YuMi/E-P/NewMoments/Controllers/EPMomentPublishViewController.m @@ -200,8 +200,7 @@ NSString *const EPMomentPublishSuccessNotification = @"EPMomentPublishSuccessNot // 验证:文本或图片至少有一项 if (self.textView.text.length == 0 && self.images.count == 0) { - // TODO: 显示错误提示 "请输入内容或选择图片" - NSLog(@"请输入内容或选择图片"); + [EPProgressHUD showError:YMLocalizedString(@"publish.content_or_image_required")]; return; } @@ -336,7 +335,7 @@ NSString *const EPMomentPublishSuccessNotification = @"EPMomentPublishSuccessNot - (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [UILabel new]; - _titleLabel.text = @"图文发布"; + _titleLabel.text = YMLocalizedString(@"publish.title"); _titleLabel.textColor = [UIColor whiteColor]; // 白色适配深色背景 _titleLabel.font = [UIFont systemFontOfSize:17]; } @@ -345,7 +344,7 @@ NSString *const EPMomentPublishSuccessNotification = @"EPMomentPublishSuccessNot - (UIButton *)publishButton { if (!_publishButton) { _publishButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_publishButton setTitle:@"发布" forState:UIControlStateNormal]; + [_publishButton setTitle:YMLocalizedString(@"common.publish") forState:UIControlStateNormal]; [_publishButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; _publishButton.titleLabel.font = [UIFont systemFontOfSize:17 weight:UIFontWeightMedium]; _publishButton.layer.cornerRadius = 25; diff --git a/YuMi/E-P/NewMoments/Controllers/EPMomentViewController.m b/YuMi/E-P/NewMoments/Controllers/EPMomentViewController.m index 3481c5c..9e2cb75 100644 --- a/YuMi/E-P/NewMoments/Controllers/EPMomentViewController.m +++ b/YuMi/E-P/NewMoments/Controllers/EPMomentViewController.m @@ -85,7 +85,7 @@ UIImage *addIcon = [UIImage imageNamed:@"icon_moment_add"]; UIButton *publishButton = [UIButton buttonWithType:UIButtonTypeCustom]; [publishButton setImage:addIcon forState:UIControlStateNormal]; - publishButton.frame = CGRectMake(0, 0, 40, 50); + publishButton.frame = CGRectMake(0, 0, 40, 40); [publishButton addTarget:self action:@selector(onPublishButtonTapped) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *publishItem = [[UIBarButtonItem alloc] initWithCustomView:publishButton]; self.navigationItem.rightBarButtonItem = publishItem; @@ -105,10 +105,10 @@ } - (void)showAlertWithMessage:(NSString *)message { - UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" + UIAlertController *alert = [UIAlertController alertControllerWithTitle:YMLocalizedString(@"common.tips") message:message preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]]; + [alert addAction:[UIAlertAction actionWithTitle:YMLocalizedString(@"common.confirm") style:UIAlertActionStyleDefault handler:nil]]; [self presentViewController:alert animated:YES completion:nil]; } @@ -133,7 +133,7 @@ __weak typeof(self) weakSelf = self; _listView.onSelectMoment = ^(NSInteger index) { __strong typeof(weakSelf) self = weakSelf; - [self showAlertWithMessage:[NSString stringWithFormat:@"点击了第 %ld 条动态", (long)index]]; + [self showAlertWithMessage:[NSString stringWithFormat:YMLocalizedString(@"moment.item_clicked"), (long)index]]; }; } return _listView; diff --git a/YuMi/E-P/NewMoments/Services/EPMomentAPISwiftHelper.swift b/YuMi/E-P/NewMoments/Services/EPMomentAPISwiftHelper.swift index ad6aa06..083c451 100644 --- a/YuMi/E-P/NewMoments/Services/EPMomentAPISwiftHelper.swift +++ b/YuMi/E-P/NewMoments/Services/EPMomentAPISwiftHelper.swift @@ -37,7 +37,7 @@ import Foundation completion([], "") } } else { - failure(Int(code), msg ?? "请求失败") + failure(Int(code), msg ?? YMLocalizedString("error.request_failed")) } }, dynamicId: nextID, pageSize: pageSize, types: types) } @@ -57,7 +57,7 @@ import Foundation failure: @escaping (Int, String) -> Void ) { guard let uid = AccountInfoStorage.instance().getUid() else { - failure(-1, "用户未登录") + failure(-1, YMLocalizedString("error.not_logged_in")) return } @@ -70,7 +70,7 @@ import Foundation if code == 200 { completion() } else { - failure(Int(code), msg ?? "发布失败") + failure(Int(code), msg ?? YMLocalizedString("error.publish_failed")) } }, uid: uid, type: type, worldId: "", content: content, resList: resList) } @@ -92,7 +92,7 @@ import Foundation failure: @escaping (Int, String) -> Void ) { guard let uid = AccountInfoStorage.instance().getUid() else { - failure(-1, "用户未登录") + failure(-1, YMLocalizedString("error.not_logged_in")) return } @@ -103,7 +103,7 @@ import Foundation if code == 200 { completion() } else { - failure(Int(code), msg ?? "点赞操作失败") + failure(Int(code), msg ?? YMLocalizedString("error.like_failed")) } }, dynamicId: dynamicId, uid: uid, status: status, likedUid: likedUid, worldId: worldIdStr) } diff --git a/YuMi/E-P/NewMoments/Views/EPMomentCell.m b/YuMi/E-P/NewMoments/Views/EPMomentCell.m index 81b0c5f..3a9d44b 100644 --- a/YuMi/E-P/NewMoments/Views/EPMomentCell.m +++ b/YuMi/E-P/NewMoments/Views/EPMomentCell.m @@ -21,6 +21,9 @@ /// 卡片容器 @property (nonatomic, strong) UIView *cardView; +/// 彩色背景层(毛玻璃下方) +@property (nonatomic, strong) UIView *colorBackgroundView; + /// 毛玻璃效果视图 @property (nonatomic, strong) UIVisualEffectView *blurEffectView; @@ -83,7 +86,13 @@ make.bottom.equalTo(self.contentView).offset(-8); }]; - // 毛玻璃效果视图 + // 彩色背景层(最底层) + [self.cardView addSubview:self.colorBackgroundView]; + [self.colorBackgroundView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.cardView); + }]; + + // 毛玻璃效果视图(在彩色背景层之上) [self.cardView addSubview:self.blurEffectView]; [self.blurEffectView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.cardView); @@ -153,7 +162,7 @@ self.currentModel = model; // 配置用户名 - self.nameLabel.text = model.nick ?: @"匿名用户"; + self.nameLabel.text = model.nick ?: YMLocalizedString(@"user.anonymous"); // 配置时间(将时间戳转换为 MM/dd 格式) self.timeLabel.text = [self formatTimestampToDate:model.publishTime]; @@ -176,20 +185,21 @@ [self applyEmotionColorEffect:model.emotionColor]; } -/// 应用情绪颜色视觉效果(Border + Shadow) +/// 应用情绪颜色视觉效果(Background + Shadow) - (void)applyEmotionColorEffect:(NSString *)emotionColorHex { - NSString *displayColorHex = emotionColorHex; - - // 如果没有保存的颜色,使用随机颜色(不持久化) - if (!displayColorHex) { - displayColorHex = [EPEmotionColorStorage randomEmotionColor]; + // 获取颜色(已在列表加载时处理,这里直接使用) + if (!emotionColorHex) { + NSLog(@"[EPMomentCell] 警告:emotionColorHex 为 nil"); + return; } - UIColor *color = [self colorFromHex:displayColorHex]; + UIColor *color = [self colorFromHex:emotionColorHex]; - // 设置 border - self.cardView.layer.borderWidth = 3.0; - self.cardView.layer.borderColor = color.CGColor; + // 移除边框 + self.cardView.layer.borderWidth = 0; + + // 设置彩色背景(50% 透明度,在毛玻璃下方) + self.colorBackgroundView.backgroundColor = [color colorWithAlphaComponent:0.5]; // 设置 shadow(使用情绪颜色) self.cardView.layer.shadowColor = color.CGColor; @@ -295,18 +305,18 @@ /// 格式化时间戳为相对时间 - (NSString *)formatTimeInterval:(NSInteger)timestamp { - if (timestamp <= 0) return @"刚刚"; + if (timestamp <= 0) return YMLocalizedString(@"time.just_now"); NSTimeInterval interval = [[NSDate date] timeIntervalSince1970] - timestamp / 1000.0; if (interval < 60) { - return @"刚刚"; + return YMLocalizedString(@"time.just_now"); } else if (interval < 3600) { - return [NSString stringWithFormat:@"%.0f分钟前", interval / 60]; + return [NSString stringWithFormat:YMLocalizedString(@"time.minutes_ago"), interval / 60]; } else if (interval < 86400) { - return [NSString stringWithFormat:@"%.0f小时前", interval / 3600]; + return [NSString stringWithFormat:YMLocalizedString(@"time.hours_ago"), interval / 3600]; } else if (interval < 604800) { - return [NSString stringWithFormat:@"%.0f天前", interval / 86400]; + return [NSString stringWithFormat:YMLocalizedString(@"time.days_ago"), interval / 86400]; } else { NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy-MM-dd"; @@ -415,14 +425,23 @@ - (UIView *)cardView { if (!_cardView) { _cardView = [[UIView alloc] init]; - _cardView.backgroundColor = [UIColor clearColor]; // 透明背景,毛玻璃效果由 blurEffectView 提供 + _cardView.backgroundColor = [UIColor clearColor]; // 透明背景,颜色由 colorBackgroundView 提供 _cardView.layer.cornerRadius = 12; // 圆角 - // Shadow 和 Border 将由 applyEmotionColorEffect 动态设置 + // Shadow 将由 applyEmotionColorEffect 动态设置 _cardView.layer.masksToBounds = NO; } return _cardView; } +- (UIView *)colorBackgroundView { + if (!_colorBackgroundView) { + _colorBackgroundView = [[UIView alloc] init]; + _colorBackgroundView.layer.cornerRadius = 12; + _colorBackgroundView.layer.masksToBounds = YES; + } + return _colorBackgroundView; +} + - (UIVisualEffectView *)blurEffectView { if (!_blurEffectView) { UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; diff --git a/YuMi/E-P/NewMoments/Views/EPMomentListView.m b/YuMi/E-P/NewMoments/Views/EPMomentListView.m index af72d53..d5f6fee 100644 --- a/YuMi/E-P/NewMoments/Views/EPMomentListView.m +++ b/YuMi/E-P/NewMoments/Views/EPMomentListView.m @@ -154,8 +154,13 @@ NSString *savedColor = [EPEmotionColorStorage colorForDynamicId:model.dynamicId]; if (savedColor) { model.emotionColor = savedColor; + } else { + // 无保存颜色,生成随机颜色并立即持久化 + NSString *randomColor = [EPEmotionColorStorage randomEmotionColor]; + model.emotionColor = randomColor; + [EPEmotionColorStorage saveColor:randomColor forDynamicId:model.dynamicId]; + NSLog(@"[EPMomentListView] 为动态 %@ 分配随机颜色: %@", model.dynamicId, randomColor); } - // 不设置则保持 nil,Cell 渲染时会随机生成 } } @@ -219,7 +224,7 @@ // MJRefresh Footer - 加载更多 __weak typeof(self) weakSelf = self; - _tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{ + MJRefreshAutoNormalFooter *footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{ __strong typeof(weakSelf) self = weakSelf; if (!self.isLoading && self.nextID.length > 0) { [self requestNextPage]; @@ -229,6 +234,10 @@ [self.tableView.mj_footer endRefreshing]; } }]; + // 设置白色文字和指示器 + footer.stateLabel.textColor = [UIColor whiteColor]; + footer.loadingView.color = [UIColor whiteColor]; + _tableView.mj_footer = footer; } return _tableView; } @@ -236,6 +245,7 @@ - (UIRefreshControl *)refreshControl { if (!_refreshControl) { _refreshControl = [[UIRefreshControl alloc] init]; + _refreshControl.tintColor = [UIColor whiteColor]; // 白色加载指示器 [_refreshControl addTarget:self action:@selector(reloadFirstPage) forControlEvents:UIControlEventValueChanged]; } return _refreshControl; diff --git a/YuMi/E-P/NewTabBar/EPTabBarController.swift b/YuMi/E-P/NewTabBar/EPTabBarController.swift index ceda0e7..110ff47 100644 --- a/YuMi/E-P/NewTabBar/EPTabBarController.swift +++ b/YuMi/E-P/NewTabBar/EPTabBarController.swift @@ -197,7 +197,7 @@ import SnapKit selectedIndex = newIndex } - let tabNames = ["动态", "我的"] + let tabNames = [YMLocalizedString("tab.moment"), YMLocalizedString("tab.mine")] NSLog("[EPTabBarController] 选中 Tab: \(tabNames[newIndex])") } @@ -254,7 +254,7 @@ import SnapKit let blankVC1 = UIViewController() blankVC1.view.backgroundColor = .white blankVC1.tabBarItem = createTabBarItem( - title: "动态", + title: YMLocalizedString("tab.moment"), normalImage: "tab_moment_normal", selectedImage: "tab_moment_selected" ) @@ -262,7 +262,7 @@ import SnapKit let blankVC2 = UIViewController() blankVC2.view.backgroundColor = .white blankVC2.tabBarItem = createTabBarItem( - title: "我的", + title: YMLocalizedString("tab.mine"), normalImage: "tab_mine_normal", selectedImage: "tab_mine_selected" ) @@ -313,20 +313,20 @@ import SnapKit // 创建动态页 let momentVC = EPMomentViewController() - momentVC.title = "动态" + momentVC.title = YMLocalizedString("tab.moment") let momentNav = createTransparentNavigationController( rootViewController: momentVC, - tabTitle: "动态", + tabTitle: YMLocalizedString("tab.moment"), normalImage: "tab_moment_normal", selectedImage: "tab_moment_selected" ) // 创建我的页 let mineVC = EPMineViewController() - mineVC.title = "我的" + mineVC.title = YMLocalizedString("tab.mine") let mineNav = createTransparentNavigationController( rootViewController: mineVC, - tabTitle: "我的", + tabTitle: YMLocalizedString("tab.mine"), normalImage: "tab_mine_normal", selectedImage: "tab_mine_selected" ) diff --git a/YuMi/Info.plist b/YuMi/Info.plist index 5f998fa..98d2155 100644 --- a/YuMi/Info.plist +++ b/YuMi/Info.plist @@ -57,7 +57,7 @@ FacebookClientToken 189d1a90712cc61cedded4cf1372cb21 FacebookDisplayName - E-Parti + E-Party ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes @@ -96,17 +96,17 @@ NSCameraUsageDescription - "E-Parti"需要您的同意,才可以访问进行拍照并上传您的图片,然后展示在您的个人主页上,便于他人查看 + "E-Party"需要您的同意,才可以访问进行拍照并上传您的图片,然后展示在您的个人主页上,便于他人查看 NSLocalNetworkUsageDescription 此App将可发现和连接到您所用网络上的设备。 NSLocationWhenInUseUsageDescription - "E-Parti"需要您的同意,才可以进行定位服务,推荐附近好友 + "E-Party"需要您的同意,才可以进行定位服务,推荐附近好友 NSMicrophoneUsageDescription - "E-Parti"需要您的同意,才可以进行语音聊天 + "E-Party"需要您的同意,才可以进行语音聊天 NSPhotoLibraryAddUsageDescription - "E-Parti"需要您的同意,才可以存储相片到相册 + "E-Party"需要您的同意,才可以存储相片到相册 NSPhotoLibraryUsageDescription - "E-Parti"需要您的同意,才可以访问相册并选择您需要上传的图片,然后展示在您的个人主页上,便于他人查看 + "E-Party"需要您的同意,才可以访问相册并选择您需要上传的图片,然后展示在您的个人主页上,便于他人查看 NSUserTrackingUsageDescription 請允許我們獲取您的IDFA權限,可以為您提供個性化活動和服務。未經您的允許,您的信息將不作其他用途。 UIApplicationSupportsIndirectInputEvents diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m index 4d0041f..55bcbca 100644 --- a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m @@ -274,7 +274,7 @@ - (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = @"Welcome to E-Parti!"; + _titleLabel.text = @"Welcome to E-Party!"; _titleLabel.font = kFontBold(28); _titleLabel.textColor = UIColorFromRGB(0x1F1B4F); } diff --git a/YuMi/Tools/Share/ShareHelder.m b/YuMi/Tools/Share/ShareHelder.m index 5468f2c..921c372 100644 --- a/YuMi/Tools/Share/ShareHelder.m +++ b/YuMi/Tools/Share/ShareHelder.m @@ -108,7 +108,7 @@ static __weak UIViewController *_presentingVC = nil; NSMutableArray *shareItems = [NSMutableArray array]; // 1. 添加纯文本(用于备忘录等文本应用) - NSString *plainText = [NSString stringWithFormat:@"🎵 发现精彩内容\n\n%@\n\n🔗 %@\n\n—— 来自 E-Parti ——", + NSString *plainText = [NSString stringWithFormat:@"🎵 发现精彩内容\n\n%@\n\n🔗 %@\n\n—— 来自 E-Party ——", subtitle, url.absoluteString ?: @""]; [shareItems addObject:plainText]; @@ -219,8 +219,8 @@ static __weak UIViewController *_presentingVC = nil; // 1. 准备分享内容 NSString *title = @"🎵 Apple Music 专辑推荐:Imagine Dragons"; - NSString *subtitle = @"来自E-Parti的精彩推荐"; - NSString *appName = @"E-Parti"; + NSString *subtitle = @"来自E-Party的精彩推荐"; + NSString *appName = @"E-Party"; NSURL *albumURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@/%@", API_HOST_URL, urlString]]; UIImage *albumImage = image; diff --git a/YuMi/Tools/Share/ShareProvider.m b/YuMi/Tools/Share/ShareProvider.m index 0ca77b2..635d5a2 100644 --- a/YuMi/Tools/Share/ShareProvider.m +++ b/YuMi/Tools/Share/ShareProvider.m @@ -21,7 +21,7 @@ if (self) { _title = title ?: @""; _subtitle = subtitle ?: @""; - _appName = appName ?: @"E-Parti"; + _appName = appName ?: @"E-Party"; _url = url; _image = image; _appIcon = appIcon; diff --git a/YuMi/ar.lproj/Localizable.strings b/YuMi/ar.lproj/Localizable.strings index f2a5c53..3045889 100644 --- a/YuMi/ar.lproj/Localizable.strings +++ b/YuMi/ar.lproj/Localizable.strings @@ -689,7 +689,7 @@ "XPLoginPwdViewController4" = "تسجيل الدخول برقم الهاتف"; "XPLoginPwdViewController5" = "نسيت كلمة المرور"; -"XPLoginPwdViewController6" = "الرجاء إدخال حساب E-Parti"; +"XPLoginPwdViewController6" = "الرجاء إدخال حساب E-Party"; "XPLoginBindPhoneResultViewController0" = "ربط الهاتف"; "XPLoginBindPhoneResultViewController1" = "رقم الهاتف المرتبط حاليًا هو"; @@ -727,7 +727,7 @@ "XPShareView5" = "فشلت عملية المشاركة"; "XPShareView6" = "إلغاء المشاركة"; "XPShareView7" = "إلغاء"; -"XPShareView8" = "تعال إلى E-Parti واكتشف صوتك الخاص"; +"XPShareView8" = "تعال إلى E-Party واكتشف صوتك الخاص"; "XPShareView9" = "التطبيق غير مثبت، فشلت عملية المشاركة"; ///XPFirstRechargeViewController.m @@ -1904,7 +1904,7 @@ ineHeadView12" = "الحمل"; "RoomHeaderView2" = "متصل: %ld ID: %ld"; "RoomHeaderView3" = "نسخ الرابط"; -"RoomHeaderView4" = "تعال إلى E-Parti، ولنلعب ونتعارف ونلعب ألعابًا"; +"RoomHeaderView4" = "تعال إلى E-Party، ولنلعب ونتعارف ونلعب ألعابًا"; "RoomHeaderView5" = "شخص جميل وصوت حلو يحقق الانتصارات، هيا لنلعب معًا~"; "RoomHeaderView6" = "تمت الإضافة للمفضلة بنجاح"; "RoomHeaderView7" = "تمت المشاركة بنجاح"; @@ -2883,7 +2883,7 @@ ineHeadView12" = "الحمل"; "XPLoginPwdViewController3" = "من فضلك إدخل الرقم السري"; "XPLoginPwdViewController4" = "تسجيل الدخول باستخدام رقم الهاتف"; "XPLoginPwdViewController5" = "نسيت كلمة المرور"; -"XPLoginPwdViewController6" = "الرجاء إدخال حساب E-Parti الخاص بك"; +"XPLoginPwdViewController6" = "الرجاء إدخال حساب E-Party الخاص بك"; "XPLoginBindPhoneResultViewController0" = "ربط الهاتف"; "XPLoginBindPhoneResultViewController1" = "رقم الهاتف المرتبط بك حاليًا هو"; @@ -3623,7 +3623,7 @@ ineHeadView12" = "الحمل"; "PIMessageContentServiceReplyView0"="كيفية الشحن:"; "PIMessageContentServiceReplyView1"="نسخ"; -"PIMessageContentServiceReplyView2"="1. للصوت - 【الشحن بالعملات】 للقيام بشحن الرصيد E-Parti اذهب إلى قسم 【الخاص بي】 داخل تطبيق"; +"PIMessageContentServiceReplyView2"="1. للصوت - 【الشحن بالعملات】 للقيام بشحن الرصيد E-Party اذهب إلى قسم 【الخاص بي】 داخل تطبيق"; "PIMessageContentServiceReplyView3"="2. ٢. اتصل بخدمة العملاء"; "PIMessageContentServiceReplyView4"="WeChat لخدمة العملاء: %@ "; "PIMessageContentServiceReplyView5"="Line لخدمة العملاء: %@ "; @@ -4120,7 +4120,7 @@ ineHeadView12" = "الحمل"; "1.0.37_text_52" = "لا يمكنك استخدام هذه الميزة."; "20.20.51_text_1" = "تسجيل الدخول بالبريد الإلكتروني"; -"20.20.51_text_2" = "Welcome to E-Parti"; +"20.20.51_text_2" = "Welcome to E-Party"; "20.20.51_text_3" = "الرجاء إدخال المعرف"; "20.20.51_text_4" = "يرجى إدخال البريد الإلكتروني"; "20.20.51_text_7" = "يرجى إدخال رمز التحقق"; diff --git a/YuMi/en.lproj/InfoPlist.strings b/YuMi/en.lproj/InfoPlist.strings index f3642bb..007534c 100644 --- a/YuMi/en.lproj/InfoPlist.strings +++ b/YuMi/en.lproj/InfoPlist.strings @@ -1,9 +1,9 @@ -NSCameraUsageDescription ="\"E-Parti\" needs your consent before you can visit, take photos and upload your pictures, and then display them on your personal homepage for others to view"; +NSCameraUsageDescription ="\"E-Party\" needs your consent before you can visit, take photos and upload your pictures, and then display them on your personal homepage for others to view"; NSLocalNetworkUsageDescription ="The app will discover and connect to devices on your network"; NSLocationWhenInUseUsageDescription = "Your consent is required before you can use location services and recommend nearby friends"; -NSMicrophoneUsageDescription = "\"E-Parti\" needs your consent before it can conduct voice chat"; -NSPhotoLibraryAddUsageDescription = "\"E-Parti\" needs your consent before it can store photos in the album"; -NSPhotoLibraryUsageDescription = "\"E-Parti\" needs your consent before you can access the album and select the pictures you need to upload, and then display them on your personal homepage for others to view"; +NSMicrophoneUsageDescription = "\"E-Party\" needs your consent before it can conduct voice chat"; +NSPhotoLibraryAddUsageDescription = "\"E-Party\" needs your consent before it can store photos in the album"; +NSPhotoLibraryUsageDescription = "\"E-Party\" needs your consent before you can access the album and select the pictures you need to upload, and then display them on your personal homepage for others to view"; NSUserTrackingUsageDescription = "Please allow us to obtain your idfa permission to provide you with personalized activities and services. your information will not be used for other purposes without your permission"; diff --git a/YuMi/en.lproj/Localizable.strings b/YuMi/en.lproj/Localizable.strings index 119b40c..a01bc66 100644 --- a/YuMi/en.lproj/Localizable.strings +++ b/YuMi/en.lproj/Localizable.strings @@ -393,7 +393,7 @@ "XPLoginPwdViewController4" = "Phone number login"; "XPLoginPwdViewController5" = "Forgot password"; -"XPLoginPwdViewController6" = "Please enter a E-Parti account"; +"XPLoginPwdViewController6" = "Please enter a E-Party account"; "XPLoginBindPhoneResultViewController0" = "Bind phone"; "XPLoginBindPhoneResultViewController1" = "Your current bound phone number is"; @@ -455,7 +455,7 @@ "XPShareView5" = "Share failed"; "XPShareView6" = "Cancel sharing"; "XPShareView7" = "Cancel"; -"XPShareView8" = "Come to E-Parti and meet your exclusive voice"; +"XPShareView8" = "Come to E-Party and meet your exclusive voice"; "XPShareView9" = "Failed to share due to the absence of related apps"; "XPFirstRechargeViewController0" = "1. Each person can only receive the first recharge benefit once\n2. Each ID and device can only participate once."; "XPFirstRechargeViewController1" = "Recharge now"; @@ -511,12 +511,12 @@ "HttpRequestHelper1" = "Please check network connection"; "HttpRequestHelper2" = "Please check network connection"; "HttpRequestHelper3" = "Login session has expired"; -"HttpRequestHelper4" = "E-Parti is taking a break Please try again later"; +"HttpRequestHelper4" = "E-Party is taking a break Please try again later"; "HttpRequestHelper5" = "Unknown error from server"; "HttpRequestHelper6" = "Please check network connection"; "HttpRequestHelper7" = "Login session has expired."; -"AppDelegate_ThirdConfig0" = "E-Parti"; +"AppDelegate_ThirdConfig0" = "E-Party"; "XPMineNotificaPresenter0" = "System Notifications"; "XPMineNotificaPresenter1" = "When turned off, system messages and official assistants will no longer prompt"; @@ -932,7 +932,7 @@ "XPIAPRechargeViewController2" = "Confirm Recharge"; "XPIAPRechargeViewController3" = "《User Recharge Agreement》"; "XPIAPRechargeViewController4" = "I have read and agree"; -"XPIAPRechargeViewController5" = "For any questions, please contact customer service, E-Parti ID"; +"XPIAPRechargeViewController5" = "For any questions, please contact customer service, E-Party ID"; "XPIAPRechargeViewController6" = "My Account"; "XPIAPRechargeViewController7" = "Reminder"; "XPIAPRechargeViewController8" = "Recharge failed. Please contact customer service for assistance."; @@ -1640,7 +1640,7 @@ "RoomHeaderView1" = "Online: %ld   ID: %ld"; "RoomHeaderView2" = "Online: %ld   ID: %ld"; "RoomHeaderView3" = "Copy Link"; -"RoomHeaderView4" = "Come to E-Parti, play games and make friends"; +"RoomHeaderView4" = "Come to E-Party, play games and make friends"; "RoomHeaderView5" = "Beautiful people with sweet voices win points, let's play together~"; "RoomHeaderView6" = "Bookmark Successful"; "RoomHeaderView7" = "Share Successful"; @@ -2315,7 +2315,7 @@ "XPLoginPwdViewController3" = "Please enter password"; "XPLoginPwdViewController4" = "Phone Number Login"; "XPLoginPwdViewController5" = "Forget Password"; -"XPLoginPwdViewController6" = "Please enter your E-Parti account"; +"XPLoginPwdViewController6" = "Please enter your E-Party account"; "XPLoginBindPhoneResultViewController0" = "Bind Phone"; "XPLoginBindPhoneResultViewController1" = "The current bound phone number is"; @@ -3418,7 +3418,7 @@ "PIMessageContentServiceReplyView0"="How to Top-Up:"; "PIMessageContentServiceReplyView1"="Copy"; -"PIMessageContentServiceReplyView2"="1. Go to 【My】-- 【Top-Up Coins】 inside E-Parti Voice App to top-up"; +"PIMessageContentServiceReplyView2"="1. Go to 【My】-- 【Top-Up Coins】 inside E-Party Voice App to top-up"; "PIMessageContentServiceReplyView3"="2. Contact customer service"; "PIMessageContentServiceReplyView4"="Customer Service WeChat: %@ "; "PIMessageContentServiceReplyView5"="Customer Service Line: %@ "; @@ -3908,7 +3908,7 @@ "1.0.37_text_52" = "Your cannot use this feature."; "20.20.51_text_1" = "Email Login"; -"20.20.51_text_2" = "Welcome to E-Parti"; +"20.20.51_text_2" = "Welcome to E-Party"; "20.20.51_text_3" = "Please enter ID"; "20.20.51_text_4" = "Please enter email"; "20.20.51_text_7" = "Please enter verification code"; @@ -4066,3 +4066,149 @@ "EPEditSetting.LogoutConfirm" = "Are you sure you want to log out?"; "EPEditSetting.Cancel" = "Cancel"; "EPEditSetting.Confirm" = "Confirm"; + +/* EP Module Keys - Added for English localization */ + +/* + * EP Module - English Localization Keys + * 用于替换 EP 模块中所有硬编码中文 + */ + +// MARK: - Common 通用 +"common.tips" = "Tips"; +"common.confirm" = "Confirm"; +"common.cancel" = "Cancel"; +"common.ok" = "OK"; +"common.publish" = "Publish"; +"common.save" = "Save"; +"common.delete" = "Delete"; +"common.upload_failed" = "Upload Failed"; +"common.update_failed" = "Update Failed"; +"common.loading" = "Loading..."; +"common.success" = "Success"; +"common.failed" = "Failed"; + +// MARK: - User 用户相关 +"user.anonymous" = "Anonymous"; +"user.nickname_not_set" = "Nickname Not Set"; +"user.not_set" = "Not Set"; + +// MARK: - Time 时间格式化 +"time.just_now" = "Just now"; +"time.minutes_ago" = "%.0f minutes ago"; +"time.hours_ago" = "%.0f hours ago"; +"time.days_ago" = "%.0f days ago"; + +// MARK: - Tab Bar Tab 标题 +"tab.moment" = "Moments"; +"tab.mine" = "Mine"; + +// MARK: - Moment 动态相关 +"moment.title" = "Enjoy your Life Time"; +"moment.item_clicked" = "Clicked item %ld"; +"moment.under_review" = "Moment is under review, cannot like"; +"moment.like" = "Like"; +"moment.unlike" = "Unlike"; +"moment.like_success" = "Like success"; +"moment.unlike_success" = "Unlike success"; +"moment.like_failed" = "Like failed: %@"; +"moment.click_image_index" = "Clicked image index: %ld"; + +// MARK: - Publish 发布相关 +"publish.title" = "Publish"; +"publish.content_or_image_required" = "Please enter content or select image"; +"publish.publish_failed" = "Publish failed: %ld - %@"; +"publish.upload_failed" = "Upload failed: %@"; + +// MARK: - Mine 我的页面 +"mine.settings_clicked" = "Settings button clicked"; +"mine.not_logged_in" = "User not logged in"; +"mine.load_user_info_failed" = "Failed to load user info"; +"mine.load_user_info_failed_msg" = "Failed to load user info: %@"; +"mine.item_clicked" = "Clicked item %ld (Mine)"; +"mine.open_settings" = "Open settings page with user info"; +"mine.avatar_updated" = "Avatar updated: %@"; + +// MARK: - Settings 设置页面 +"setting.nickname_update_success" = "Nickname updated: %@"; +"setting.nickname_update_failed" = "Nickname update failed, please try again later"; +"setting.nickname_update_failed_msg" = "Nickname update failed: %ld - %@"; +"setting.avatar_update_failed" = "Avatar update failed, please try again later"; +"setting.avatar_upload_success" = "Avatar uploaded: %@"; +"setting.avatar_upload_failed" = "Avatar upload failed: %@"; +"setting.avatar_upload_no_url" = "Avatar uploaded but no URL returned"; +"setting.avatar_update_success" = "Avatar updated"; +"setting.avatar_update_failed_msg" = "Avatar update failed: %ld - %@"; +"setting.image_not_selected" = "Image not selected"; +"setting.account_not_found" = "Account info not found"; +"setting.redirected_to_login" = "Redirected to login page"; +"setting.feature_reserved" = "[%@] - Feature reserved for future implementation"; +"setting.user_info_updated" = "User info updated: %@"; + +// MARK: - Login 登录相关 +"login.debug_mode_active" = "✅ DEBUG mode active"; +"login.release_mode" = "⚠️ Currently in Release mode"; +"login.switch_env" = "Switch Environment"; +"login.feedback_placeholder" = "Feedback - Placeholder, Phase 2 implementation"; +"login.debug_placeholder" = "Debug - Placeholder, Phase 2 implementation"; +"login.area_selection_placeholder" = "Area selection - Placeholder, Phase 2 implementation"; +"login.id_login_success" = "ID login success: %@"; +"login.email_login_success" = "Email login success: %@"; +"login.phone_login_success" = "Phone login success: %@"; + +// MARK: - Login Manager 登录管理 +"login_manager.account_incomplete" = "Account info incomplete, cannot continue"; +"login_manager.access_token_empty" = "access_token is empty, cannot continue"; +"login_manager.login_success" = "Login success, switched to EPTabBarController"; +"login_manager.request_ticket_failed" = "Request Ticket failed: %ld - %@"; +"login_manager.request_ticket_failed_redirect" = "Ticket request failed, still redirect to home page"; +"login_manager.apple_login_placeholder" = "Apple Login - Placeholder, Phase 2 implementation"; +"login_manager.debug_show_color_guide" = "Debug mode: Show signature color guide (has color: %d)"; +"login_manager.user_selected_color" = "User selected signature color: %@"; +"login_manager.user_skipped_color" = "User skipped signature color selection"; + +// MARK: - API Errors API 错误 +"error.not_logged_in" = "Not logged in"; +"error.request_failed" = "Request failed"; +"error.publish_failed" = "Publish failed"; +"error.like_failed" = "Like operation failed"; +"error.account_parse_failed" = "Account info parse failed"; +"error.operation_failed" = "Operation failed"; +"error.ticket_parse_failed" = "Ticket parse failed"; +"error.request_ticket_failed" = "Request Ticket failed"; +"error.send_email_code_failed" = "Send email verification code failed"; +"error.send_phone_code_failed" = "Send phone verification code failed"; +"error.login_failed" = "Login failed"; +"error.reset_password_failed" = "Reset password failed"; +"error.quick_login_failed" = "Quick login failed"; +"error.image_compress_failed" = "Image compress failed"; +"error.qcloud_init_failed" = "QCloud initialization failed"; +"error.qcloud_config_failed" = "Get QCloud config failed"; +"error.qcloud_config_not_initialized" = "QCloud config not initialized"; + +// MARK: - Upload 上传相关 +"upload.progress_format" = "Uploading %ld/%ld"; + +// MARK: - Color Storage 颜色存储 +"color_storage.save_signature_color" = "Save user signature color: %@"; +"color_storage.clear_signature_color" = "Clear user signature color"; + +// MARK: - Tab Bar Controller TabBar 控制器 +"tabbar.init_complete" = "Floating TabBar initialization complete"; +"tabbar.released" = "Released"; +"tabbar.setup_complete" = "Floating TabBar setup complete"; +"tabbar.selected_tab" = "Selected Tab: %@"; +"tabbar.global_manager_setup" = "Global manager setup complete (v0.2 - No MiniRoom)"; +"tabbar.initial_vcs_setup" = "Initial ViewControllers setup complete"; +"tabbar.refresh_login_status" = "TabBar refreshed, login status: %d"; +"tabbar.login_vcs_created" = "Post-login ViewControllers created - Moment & Mine"; +"tabbar.show_tabbar_root" = "Show TabBar - Root page"; +"tabbar.hide_tabbar_child" = "Hide TabBar - Child page (level: %ld)"; + +// MARK: - Debug Logs 调试日志(建议直接用英文重写,这里仅供参考) +"debug.apply_signature_color" = "Apply signature color: %@"; +"debug.start_breathing_glow" = "Start breathing glow animation"; +"debug.warning_emotion_color_nil" = "Warning: emotionColorHex is nil"; +"debug.assign_random_color" = "Assign random color for moment %@: %@"; + +/* End EP Module Keys */ diff --git a/YuMi/es.lproj/InfoPlist.strings b/YuMi/es.lproj/InfoPlist.strings index 14522d8..5faf76a 100644 --- a/YuMi/es.lproj/InfoPlist.strings +++ b/YuMi/es.lproj/InfoPlist.strings @@ -1,7 +1,7 @@ -NSCameraUsageDescription = "\"E-Parti\" necesita su consentimiento para que pueda visitar, tomar fotos y cargar sus imágenes, y luego mostrarlas en su página de inicio personal para que otras personas las vean"; +NSCameraUsageDescription = "\"E-Party\" necesita su consentimiento para que pueda visitar, tomar fotos y cargar sus imágenes, y luego mostrarlas en su página de inicio personal para que otras personas las vean"; NSLocalNetworkUsageDescription = "La aplicación descubrirá y se conectará a dispositivos en su red"; NSLocationWhenInUseUsageDescription = "Se requiere su consentimiento antes de que pueda usar los servicios de ubicación y recomendar amigos cercanos"; -NSMicrophoneUsageDescription = "\"E-Parti\" necesita su consentimiento antes de poder realizar una conversación de voz"; -NSPhotoLibraryAddUsageDescription = "\"E-Parti\" necesita su consentimiento antes de poder almacenar fotos en el álbum"; -NSPhotoLibraryUsageDescription = "\"E-Parti\" necesita su consentimiento para que pueda acceder al álbum y seleccionar las imágenes que necesita cargar, y luego mostrarlas en su página de inicio personal para que otras personas las vean"; +NSMicrophoneUsageDescription = "\"E-Party\" necesita su consentimiento antes de poder realizar una conversación de voz"; +NSPhotoLibraryAddUsageDescription = "\"E-Party\" necesita su consentimiento antes de poder almacenar fotos en el álbum"; +NSPhotoLibraryUsageDescription = "\"E-Party\" necesita su consentimiento para que pueda acceder al álbum y seleccionar las imágenes que necesita cargar, y luego mostrarlas en su página de inicio personal para que otras personas las vean"; NSUserTrackingUsageDescription = "Permítanos obtener su permiso de idfa para proporcionarle actividades y servicios personalizados. Su información no se utilizará para otros fines sin su permiso"; diff --git a/YuMi/es.lproj/Localizable.strings b/YuMi/es.lproj/Localizable.strings index aa42cea..3703bd1 100644 --- a/YuMi/es.lproj/Localizable.strings +++ b/YuMi/es.lproj/Localizable.strings @@ -391,7 +391,7 @@ "XPLoginPwdViewController4" = "Inicio de sesión con número de teléfono"; "XPLoginPwdViewController5" = "Olvidé la contraseña"; -"XPLoginPwdViewController6" = "Por favor ingresa una cuenta E-Parti"; +"XPLoginPwdViewController6" = "Por favor ingresa una cuenta E-Party"; "XPLoginBindPhoneResultViewController0" = "Vincular teléfono"; "XPLoginBindPhoneResultViewController1" = "Tu número de teléfono vinculado actual es"; @@ -453,7 +453,7 @@ "XPShareView5" = "Compartir fallido"; "XPShareView6" = "Cancelar compartir"; "XPShareView7" = "Cancelar"; -"XPShareView8" = "Ven a E-Parti y conoce tu voz exclusiva"; +"XPShareView8" = "Ven a E-Party y conoce tu voz exclusiva"; "XPShareView9" = "Error al compartir debido a la ausencia de aplicaciones relacionadas"; "XPFirstRechargeViewController0" = "1. Cada persona solo puede recibir el beneficio de la primera recarga una vez\n2. Cada ID y dispositivo solo puede participar una vez."; "XPFirstRechargeViewController1" = "Recargar ahora"; @@ -509,12 +509,12 @@ "HttpRequestHelper1" = "Por favor comprueba la conexión a internet"; "HttpRequestHelper2" = "Por favor comprueba la conexión a internet"; "HttpRequestHelper3" = "La sesión de inicio de sesión ha expirado"; -"HttpRequestHelper4" = "E-Parti está descansando Por favor intenta más tarde"; +"HttpRequestHelper4" = "E-Party está descansando Por favor intenta más tarde"; "HttpRequestHelper5" = "Error desconocido del servidor"; "HttpRequestHelper6" = "Por favor comprueba la conexión a internet"; "HttpRequestHelper7" = "La sesión de inicio de sesión ha expirado."; -"AppDelegate_ThirdConfig0" = "E-Parti"; +"AppDelegate_ThirdConfig0" = "E-Party"; "XPMineNotificaPresenter0" = "Notificaciones del sistema"; "XPMineNotificaPresenter1" = "Cuando está apagado, los mensajes del sistema y los asistentes oficiales ya no se mostrarán"; @@ -930,7 +930,7 @@ "XPIAPRechargeViewController2" = "Confirmar Recarga"; "XPIAPRechargeViewController3" = "《Acuerdo de Recarga de Usuario》"; "XPIAPRechargeViewController4" = "He leído y acepto"; -"XPIAPRechargeViewController5" = "Para cualquier pregunta, por favor contacte al servicio al cliente, ID E-Parti"; +"XPIAPRechargeViewController5" = "Para cualquier pregunta, por favor contacte al servicio al cliente, ID E-Party"; "XPIAPRechargeViewController6" = "Mi Cuenta"; "XPIAPRechargeViewController7" = "Recordatorio"; "XPIAPRechargeViewController8" = "Recarga fallida. Por favor contacte al servicio al cliente para obtener ayuda."; @@ -1638,7 +1638,7 @@ "RoomHeaderView1" = "En línea: %ld ID: %ld"; "RoomHeaderView2" = "En línea: %ld ID: %ld"; "RoomHeaderView3" = "Copiar Enlace"; -"RoomHeaderView4" = "Ven a E-Parti, juega y haz amigos"; +"RoomHeaderView4" = "Ven a E-Party, juega y haz amigos"; "RoomHeaderView5" = "Gente hermosa con voces dulces gana puntos, ¡juguemos juntos~"; "RoomHeaderView6" = "Marcador Guardado"; "RoomHeaderView7" = "Compartido con Éxito"; @@ -2313,7 +2313,7 @@ "XPLoginPwdViewController3" = "Please enter password"; "XPLoginPwdViewController4" = "Phone Number Login"; "XPLoginPwdViewController5" = "Forget Password"; -"XPLoginPwdViewController6" = "Please enter your E-Parti account"; +"XPLoginPwdViewController6" = "Please enter your E-Party account"; "XPLoginBindPhoneResultViewController0" = "Bind Phone"; "XPLoginBindPhoneResultViewController1" = "The current bound phone number is"; @@ -3416,7 +3416,7 @@ "PIMessageContentServiceReplyView0"="How to Top-Up:"; "PIMessageContentServiceReplyView1"="Copy"; -"PIMessageContentServiceReplyView2"="1. Go to 【My】-- 【Top-Up Coins】 inside E-Parti Voice App to top-up"; +"PIMessageContentServiceReplyView2"="1. Go to 【My】-- 【Top-Up Coins】 inside E-Party Voice App to top-up"; "PIMessageContentServiceReplyView3"="2. Contact customer service"; "PIMessageContentServiceReplyView4"="Customer Service WeChat: %@ "; "PIMessageContentServiceReplyView5"="Customer Service Line: %@ "; @@ -3930,7 +3930,7 @@ "1.0.37_text_52" = "No puedes usar esta función."; "20.20.51_text_1" = "Inicio de sesión por correo electrónico"; -"20.20.51_text_2" = "Bienvenido a E-Parti"; +"20.20.51_text_2" = "Bienvenido a E-Party"; "20.20.51_text_3" = "Por favor ingresa ID"; "20.20.51_text_4" = "Por favor ingresa correo electrónico"; "20.20.51_text_7" = "Por favor ingresa el código de verificación"; diff --git a/YuMi/pt-BR.lproj/InfoPlist.strings b/YuMi/pt-BR.lproj/InfoPlist.strings index 7d57f2a..66b6f7a 100644 --- a/YuMi/pt-BR.lproj/InfoPlist.strings +++ b/YuMi/pt-BR.lproj/InfoPlist.strings @@ -1,13 +1,13 @@ -NSCameraUsageDescription = "O \"E-Parti\" precisa do seu consentimento antes que você possa visitar, tirar fotos e enviar suas imagens, e depois exibi-las em sua página pessoal para que outros possam visualizar"; +NSCameraUsageDescription = "O \"E-Party\" precisa do seu consentimento antes que você possa visitar, tirar fotos e enviar suas imagens, e depois exibi-las em sua página pessoal para que outros possam visualizar"; NSLocalNetworkUsageDescription = "O aplicativo irá descobrir e conectar-se a dispositivos em sua rede"; NSLocationWhenInUseUsageDescription = "O seu consentimento é necessário antes que você possa usar os serviços de localização e recomendar amigos próximos"; -NSMicrophoneUsageDescription = "O \"E-Parti\" precisa do seu consentimento antes de poder realizar chat de voz"; +NSMicrophoneUsageDescription = "O \"E-Party\" precisa do seu consentimento antes de poder realizar chat de voz"; -NSPhotoLibraryAddUsageDescription = "O \"E-Parti\" precisa do seu consentimento antes de poder armazenar fotos no álbum"; +NSPhotoLibraryAddUsageDescription = "O \"E-Party\" precisa do seu consentimento antes de poder armazenar fotos no álbum"; -NSPhotoLibraryUsageDescription = "O \"E-Parti\" precisa do seu consentimento antes que você possa acessar o álbum e selecionar as imagens que deseja enviar, e depois exibi-las em sua página pessoal para que outros possam visualizar"; +NSPhotoLibraryUsageDescription = "O \"E-Party\" precisa do seu consentimento antes que você possa acessar o álbum e selecionar as imagens que deseja enviar, e depois exibi-las em sua página pessoal para que outros possam visualizar"; NSUserTrackingUsageDescription = "Por favor, permita-nos obter sua permissão IDFA para fornecer a você atividades e serviços personalizados. Suas informações não serão usadas para outros fins sem a sua permissão"; diff --git a/YuMi/pt-BR.lproj/Localizable.strings b/YuMi/pt-BR.lproj/Localizable.strings index 66b9b05..ba6d55b 100644 --- a/YuMi/pt-BR.lproj/Localizable.strings +++ b/YuMi/pt-BR.lproj/Localizable.strings @@ -305,7 +305,7 @@ "XPLoginPwdViewController2" = "Por favor insira número de telefone/ID"; "XPLoginPwdViewController4" = "Login com número de telefone"; "XPLoginPwdViewController5" = "Esqueceu a senha"; -"XPLoginPwdViewController6" = "Por favor insira uma conta E-Parti"; +"XPLoginPwdViewController6" = "Por favor insira uma conta E-Party"; "XPLoginBindPhoneResultViewController0" = "Vincular telefone"; "XPLoginBindPhoneResultViewController1" = "Seu número de telefone vinculado atual é"; "XPLoginBindPhoneResultViewController2" = "Alterar número de telefone"; @@ -363,7 +363,7 @@ "XPShareView5" = "Compartilhamento falhou"; "XPShareView6" = "Cancelar compartilhamento"; "XPShareView7" = "Cancelar"; -"XPShareView8" = "Venha para E-Parti e conheça sua voz exclusiva"; +"XPShareView8" = "Venha para E-Party e conheça sua voz exclusiva"; "XPShareView9" = "Falha ao compartilhar devido à ausência de aplicativos relacionados"; "XPFirstRechargeViewController0" = "1. Cada pessoa só pode receber o benefício da primeira recarga uma vez\n2. Cada ID e dispositivo só pode participar uma vez."; "XPFirstRechargeViewController1" = "Recarregar agora"; @@ -412,11 +412,11 @@ "HttpRequestHelper1" = "Por favor verifique a conexão de rede"; "HttpRequestHelper2" = "Por favor verifique a conexão de rede"; "HttpRequestHelper3" = "A sessão de login expirou"; -"HttpRequestHelper4" = "E-Parti está fazendo uma pausa Por favor tente novamente mais tarde"; +"HttpRequestHelper4" = "E-Party está fazendo uma pausa Por favor tente novamente mais tarde"; "HttpRequestHelper5" = "Erro desconhecido do servidor"; "HttpRequestHelper6" = "Por favor verifique a conexão de rede"; "HttpRequestHelper7" = "A sessão de login expirou."; -"AppDelegate_ThirdConfig0" = "E-Parti"; +"AppDelegate_ThirdConfig0" = "E-Party"; "XPMineNotificaPresenter0" = "Notificações do sistema"; "XPMineNotificaPresenter1" = "Quando desligado, mensagens do sistema e assistentes oficiais não avisarão mais"; "XPMineNotificaPresenter2" = "Notificações ao vivo"; @@ -753,7 +753,7 @@ "XPIAPRechargeViewController2" = "Confirmar Recarga"; "XPIAPRechargeViewController3" = "《Termos de Recarga do Usuário》"; "XPIAPRechargeViewController4" = "Li e concordo"; -"XPIAPRechargeViewController5" = "Para dúvidas, entre em contato com o atendimento, ID E-Parti"; +"XPIAPRechargeViewController5" = "Para dúvidas, entre em contato com o atendimento, ID E-Party"; "XPIAPRechargeViewController6" = "Minha Conta"; "XPIAPRechargeViewController7" = "Lembrete"; "XPIAPRechargeViewController8" = "Falha na recarga. Entre em contato com o atendimento para assistência."; @@ -1351,7 +1351,7 @@ "RoomHeaderView1" = "Online: %ld   ID: %ld"; "RoomHeaderView2" = "Online: %ld   ID: %ld"; "RoomHeaderView3" = "Copiar Link"; -"RoomHeaderView4" = "Venha para E-Parti, jogue e faça amigos"; +"RoomHeaderView4" = "Venha para E-Party, jogue e faça amigos"; "RoomHeaderView5" = "Pessoas bonitas com vozes doces ganham pontos, vamos jogar juntos~"; "RoomHeaderView6" = "Favoritado com Sucesso"; "RoomHeaderView7" = "Compartilhado com Sucesso"; @@ -1917,7 +1917,7 @@ "XPLoginPwdViewController3" = "Digite a senha"; "XPLoginPwdViewController4" = "Login com Número de Telefone"; "XPLoginPwdViewController5" = "Esqueci a Senha"; -"XPLoginPwdViewController6" = "Digite sua conta E-Parti"; +"XPLoginPwdViewController6" = "Digite sua conta E-Party"; "XPLoginBindPhoneResultViewController0" = "Vincular Telefone"; "XPLoginBindPhoneResultViewController1" = "O número de telefone vinculado atualmente é"; "XPLoginBindPhoneResultViewController2" = "Alterar Número de Telefone"; @@ -2748,7 +2748,7 @@ "XPCandyTreeBuyView0"="Por favor, selecione ou insira o número de martelos para comprar"; "PIMessageContentServiceReplyView0"="Como Recarregar:"; "PIMessageContentServiceReplyView1"="Copiar"; -"PIMessageContentServiceReplyView2"="1. Vá para 【Meu】-- 【Recarregar Moedas】 dentro do aplicativo E-Parti Voice para recarregar"; +"PIMessageContentServiceReplyView2"="1. Vá para 【Meu】-- 【Recarregar Moedas】 dentro do aplicativo E-Party Voice para recarregar"; "PIMessageContentServiceReplyView3"="2. Contate o atendimento ao cliente"; "PIMessageContentServiceReplyView4"="WeChat do Atendimento: %@ "; "PIMessageContentServiceReplyView5"="Linha do Atendimento: %@ "; @@ -3204,7 +3204,7 @@ "1.0.37_text_51" = "Presentes foram colocados na bolsa!"; "1.0.37_text_52" = "Você não pode usar este recurso."; "20.20.51_text_1" = "Login por Email"; -"20.20.51_text_2" = "Bem-vindo ao E-Parti"; +"20.20.51_text_2" = "Bem-vindo ao E-Party"; "20.20.51_text_3" = "Digite o ID"; "20.20.51_text_4" = "Digite o email"; "20.20.51_text_7" = "Digite o código de verificação"; diff --git a/YuMi/ru.lproj/InfoPlist.strings b/YuMi/ru.lproj/InfoPlist.strings index ff9669e..76f70b0 100644 --- a/YuMi/ru.lproj/InfoPlist.strings +++ b/YuMi/ru.lproj/InfoPlist.strings @@ -1,8 +1,8 @@ -NSCameraUsageDescription = "\"E-Parti\" нужен ваш consentimiento перед тем, как вы можете посетить, фотографировать и загружать ваши изображения, а затем отображать их на вашей персональной странице для просмотра другими людьми"; +NSCameraUsageDescription = "\"E-Party\" нужен ваш consentimiento перед тем, как вы можете посетить, фотографировать и загружать ваши изображения, а затем отображать их на вашей персональной странице для просмотра другими людьми"; NSLocalNetworkUsageDescription = "Приложение обнаружит и подключится к устройствам в вашей сети"; NSLocationWhenInUseUsageDescription = "Вам необходимо дать согласие, прежде чем вы сможете использовать службы определения местоположения и рекомендовать близких друзей"; -NSMicrophoneUsageDescription = "\"E-Parti\" нужен ваш consentimiento перед тем, как он может проводить голосовый чат"; -NSPhotoLibraryAddUsageDescription = "\"E-Parti\" нужен ваш consentimiento перед тем, как он может хранить фотографии в альбоме"; -NSPhotoLibraryUsageDescription = "\"E-Parti\" нужен ваш consentimiento перед тем, как вы можете получить доступ к альбому и выбрать изображения, которые вам нужно загрузить, а затем отобразить их на вашей персональной странице для просмотра другими людьми"; +NSMicrophoneUsageDescription = "\"E-Party\" нужен ваш consentimiento перед тем, как он может проводить голосовый чат"; +NSPhotoLibraryAddUsageDescription = "\"E-Party\" нужен ваш consentimiento перед тем, как он может хранить фотографии в альбоме"; +NSPhotoLibraryUsageDescription = "\"E-Party\" нужен ваш consentimiento перед тем, как вы можете получить доступ к альбому и выбрать изображения, которые вам нужно загрузить, а затем отобразить их на вашей персональной странице для просмотра другими людьми"; NSUserTrackingUsageDescription = "Пожалуйста, разрешите нам получить ваше разрешение на idfa, чтобы предоставить вам персонализированные мероприятия и услуги. ваша информация не будет использоваться для других целей без вашего разрешения"; diff --git a/YuMi/ru.lproj/Localizable.strings b/YuMi/ru.lproj/Localizable.strings index 025cb6f..441f48a 100644 --- a/YuMi/ru.lproj/Localizable.strings +++ b/YuMi/ru.lproj/Localizable.strings @@ -390,7 +390,7 @@ "XPLoginPwdViewController4" = "Вход по номеру телефона"; "XPLoginPwdViewController5" = "Забыли пароль"; -"XPLoginPwdViewController6" = "Пожалуйста, введите аккаунт E-Parti"; +"XPLoginPwdViewController6" = "Пожалуйста, введите аккаунт E-Party"; "XPLoginBindPhoneResultViewController0" = "Привязать телефон"; "XPLoginBindPhoneResultViewController1" = "Ваш текущий привязанный номер телефона"; @@ -452,7 +452,7 @@ "XPShareView5" = "Ошибка при отправке"; "XPShareView6" = "Отменить отправку"; "XPShareView7" = "Отмена"; -"XPShareView8" = "Приходите в E-Parti и встречайте свой эксклюзивный голос"; +"XPShareView8" = "Приходите в E-Party и встречайте свой эксклюзивный голос"; "XPShareView9" = "Ошибка при отправке из-за отсутствия связанных приложений"; "XPFirstRechargeViewController0" = "1. Каждый человек может получить преимущество за первый пополнение только один раз\n2. Каждая учетная запись и устройство могут участвовать только один раз."; "XPFirstRechargeViewController1" = "Пополнить сейчас"; @@ -508,12 +508,12 @@ "HttpRequestHelper1" = "Пожалуйста, проверьте интернет-подключение"; "HttpRequestHelper2" = "Пожалуйста, проверьте интернет-подключение"; "HttpRequestHelper3" = "Сессия входа истекла"; -"HttpRequestHelper4" = "E-Parti отдыхает Пожалуйста, попробуйте позже"; +"HttpRequestHelper4" = "E-Party отдыхает Пожалуйста, попробуйте позже"; "HttpRequestHelper5" = "Неизвестная ошибка сервера"; "HttpRequestHelper6" = "Пожалуйста, проверьте интернет-подключение"; "HttpRequestHelper7" = "Сессия входа истекла."; -"AppDelegate_ThirdConfig0" = "E-Parti"; +"AppDelegate_ThirdConfig0" = "E-Party"; "XPMineNotificaPresenter0" = "Системные уведомления"; "XPMineNotificaPresenter1" = "При отключении системные сообщения и официальные помощники больше не будут появляться"; @@ -929,7 +929,7 @@ "XPIAPRechargeViewController2" = "Подтвердить пополнение"; "XPIAPRechargeViewController3" = "《Соглашение о пополнении баланса пользователя》"; "XPIAPRechargeViewController4" = "Я прочел(а) и согласен(а)"; -"XPIAPRechargeViewController5" = "По всем вопросам обращайтесь в службу поддержки, E-Parti ID"; +"XPIAPRechargeViewController5" = "По всем вопросам обращайтесь в службу поддержки, E-Party ID"; "XPIAPRechargeViewController6" = "Мой аккаунт"; "XPIAPRechargeViewController7" = "Напоминание"; "XPIAPRechargeViewController8" = "Пополнение не удалось. Пожалуйста, обратитесь в службу поддержки за помощью."; @@ -1637,7 +1637,7 @@ "RoomHeaderView1" = "Онлайн: %ld   ID: %ld"; "RoomHeaderView2" = "Онлайн: %ld   ID: %ld"; "RoomHeaderView3" = "Копировать ссылку"; -"RoomHeaderView4" = "Приходите на E-Parti, играйте в игры и заводите друзей"; +"RoomHeaderView4" = "Приходите на E-Party, играйте в игры и заводите друзей"; "RoomHeaderView5" = "Красивые люди с сладкими голосами зарабатывают очки, давайте играть вместе~"; "RoomHeaderView6" = "Закладка успешно создана"; "RoomHeaderView7" = "Поделка успешно выполнена"; @@ -2312,7 +2312,7 @@ "XPLoginPwdViewController3" = "Введите пароль"; "XPLoginPwdViewController4" = "Вход по номеру телефона"; "XPLoginPwdViewController5" = "Забыли пароль"; -"XPLoginPwdViewController6" = "Введите ваш аккаунт E-Parti"; +"XPLoginPwdViewController6" = "Введите ваш аккаунт E-Party"; "XPLoginBindPhoneResultViewController0" = "Привязать телефон"; "XPLoginBindPhoneResultViewController1" = "Текущий привязанный номер телефона"; @@ -3415,7 +3415,7 @@ "PIMessageContentServiceReplyView0"="Как пополнить баланс:"; "PIMessageContentServiceReplyView1"="Скопировать"; -"PIMessageContentServiceReplyView2"="1. Перейдите в 【Мой】-- 【Пополнить монеты】 внутри приложения E-Parti Voice для пополнения баланса"; +"PIMessageContentServiceReplyView2"="1. Перейдите в 【Мой】-- 【Пополнить монеты】 внутри приложения E-Party Voice для пополнения баланса"; "PIMessageContentServiceReplyView3"="2. Свяжитесь с поддержкой"; "PIMessageContentServiceReplyView4"="WeChat поддержки: %@ "; "PIMessageContentServiceReplyView5"="Телефон поддержки: %@ "; @@ -3925,7 +3925,7 @@ "1.0.37_text_52" = "Вы не можете использовать эту функцию."; "20.20.51_text_1" = "Вход по электронной почте"; -"20.20.51_text_2" = "Добро пожаловать в E-Parti"; +"20.20.51_text_2" = "Добро пожаловать в E-Party"; "20.20.51_text_3" = "Пожалуйста, введите ID"; "20.20.51_text_4" = "Пожалуйста, введите электронную почту"; "20.20.51_text_7" = "Пожалуйста, введите код подтверждения"; diff --git a/YuMi/tr.lproj/InfoPlist.strings b/YuMi/tr.lproj/InfoPlist.strings index cc0358b..58752a5 100644 --- a/YuMi/tr.lproj/InfoPlist.strings +++ b/YuMi/tr.lproj/InfoPlist.strings @@ -1,7 +1,7 @@ -NSCameraUsageDescription = "\"E-Parti\"'ın ziyaret etmeden önce, fotoğraf çekip yüklemeden önce onayınıza ihtiyacı var, ardından bunlar kişisel ana sayfanızda başkalarının görmesi için görüntülenecektir"; +NSCameraUsageDescription = "\"E-Party\"'ın ziyaret etmeden önce, fotoğraf çekip yüklemeden önce onayınıza ihtiyacı var, ardından bunlar kişisel ana sayfanızda başkalarının görmesi için görüntülenecektir"; NSLocalNetworkUsageDescription = "Uygulama, ağınızdaki cihazları keşfedecek ve bağlanacaktır"; NSLocationWhenInUseUsageDescription = "Konum hizmetlerini kullanabilmeniz ve yakındaki arkadaşları önerebilmemiz için onayınız gereklidir"; -NSMicrophoneUsageDescription = "\"E-Parti\"'ın sesli sohbet gerçekleştirebilmesi için onayınıza ihtiyacı var"; -NSPhotoLibraryAddUsageDescription = "\"E-Parti\"'ın albüme fotoğraf kaydedebilmesi için onayınıza ihtiyacı var"; -NSPhotoLibraryUsageDescription = "\"E-Parti\"'ın albüme erişebilmesi, yüklemek için gerekli fotoğrafları seçebilmeniz ve ardından bunları kişisel ana sayfanızda başkalarının görmesi için görüntüleyebilmeniz için onayınıza ihtiyacı var"; +NSMicrophoneUsageDescription = "\"E-Party\"'ın sesli sohbet gerçekleştirebilmesi için onayınıza ihtiyacı var"; +NSPhotoLibraryAddUsageDescription = "\"E-Party\"'ın albüme fotoğraf kaydedebilmesi için onayınıza ihtiyacı var"; +NSPhotoLibraryUsageDescription = "\"E-Party\"'ın albüme erişebilmesi, yüklemek için gerekli fotoğrafları seçebilmeniz ve ardından bunları kişisel ana sayfanızda başkalarının görmesi için görüntüleyebilmeniz için onayınıza ihtiyacı var"; NSUserTrackingUsageDescription = "Size kişiselleştirilmiş etkinlikler ve hizmetler sunabilmemiz için lütfen IDFA izninizi vermemize izin verin. İzniniz olmadan bilgileriniz başka amaçlar için kullanılmayacaktır"; diff --git a/YuMi/tr.lproj/Localizable.strings b/YuMi/tr.lproj/Localizable.strings index 85d9b9c..c516639 100644 --- a/YuMi/tr.lproj/Localizable.strings +++ b/YuMi/tr.lproj/Localizable.strings @@ -50,7 +50,7 @@ "XPShareView5" = "Paylaşım başarısız oldu"; "XPShareView6" = "Paylaşımı iptal et"; "XPShareView7" = "İptal"; -"XPShareView8" = "E-Parti'a gel, özel sesinle tanış"; +"XPShareView8" = "E-Party'a gel, özel sesinle tanış"; "XPShareView9" = "İlgili uygulama yüklü değil, paylaşım başarısız oldu"; ///XPFirstRechargeViewController.m "XPFirstRechargeViewController0" = "1. Herkes sadece bir kez ilk yükleme avantajı alabilir\n2. Her ID ve cihaz sadece bir kez katılabilir."; @@ -119,12 +119,12 @@ "HttpRequestHelper1" = "Lütfen internet bağlantınızı kontrol edin"; "HttpRequestHelper2" = "Lütfen internet bağlantınızı kontrol edin"; "HttpRequestHelper3" = "Giriş süresi aşıldı"; -"HttpRequestHelper4" = "E-Parti hata veriyor, lütfen daha sonra tekrar deneyin"; +"HttpRequestHelper4" = "E-Party hata veriyor, lütfen daha sonra tekrar deneyin"; "HttpRequestHelper5" = "API hatası, bilinmeyen bilgiler"; "HttpRequestHelper6" = "Lütfen internet bağlantınızı kontrol edin"; "HttpRequestHelper7" = "Giriş süresi aşıldı"; -"AppDelegate_ThirdConfig0" = "E-Parti"; +"AppDelegate_ThirdConfig0" = "E-Party"; "XPMineNotificaPresenter0" = "Sistem bildirimleri"; "XPMineNotificaPresenter1" = "Kapatıldığında, sistem mesajları ve resmi asistan artık size bildirim göstermeyecek"; @@ -531,7 +531,7 @@ "XPIAPRechargeViewController2" = "Şarj Et"; "XPIAPRechargeViewController3" = "Kullanıcı yükleme sözleşmesi"; "XPIAPRechargeViewController4" = "Okudum ve kabul ediyorum"; -"XPIAPRechargeViewController5" = "Herhangi bir sorunuz varsa lütfen müşteri hizmetleri ile iletişime geçin, E-Parti numarası"; +"XPIAPRechargeViewController5" = "Herhangi bir sorunuz varsa lütfen müşteri hizmetleri ile iletişime geçin, E-Party numarası"; "XPIAPRechargeViewController6" = "Hesabım"; "XPIAPRechargeViewController7" = "Uyarı"; "XPIAPRechargeViewController8" = "Şarj başarısız, lütfen müşteri hizmetleri ile iletişime geçin~"; @@ -1237,7 +1237,7 @@ "RoomHeaderView1" = "Çevrimiçi:%ld ID:%ld"; "RoomHeaderView2" = "Çevrimiçi:%ld ID:%ld"; "RoomHeaderView3" = "Bağlantıyı Kopyala"; -"RoomHeaderView4" = "E-Parti'a gel, oyun oyna ve arkadaş edin"; +"RoomHeaderView4" = "E-Party'a gel, oyun oyna ve arkadaş edin"; "RoomHeaderView5" = "Güzel ve tatlı sesli, beraber oynayalım~"; "RoomHeaderView6" = "Favorilere Eklendi"; "RoomHeaderView7" = "Paylaşım Başarılı"; @@ -2159,7 +2159,7 @@ "XPLoginPwdViewController3" = "Şifre girin"; "XPLoginPwdViewController4" = "Telefon ile Giriş"; "XPLoginPwdViewController5" = "Şifremi Unuttum"; -"XPLoginPwdViewController6" = "E-Parti hesabınızı girin"; +"XPLoginPwdViewController6" = "E-Party hesabınızı girin"; "XPLoginBindPhoneResultViewController0" = "Telefon Bağlama Başarılı"; "XPLoginBindPhoneResultViewController1" = "Şu anda bağlı olduğunuz telefon numarası"; @@ -2884,7 +2884,7 @@ "PIMessageContentServiceReplyView0"="Nasıl yüklenir:"; "PIMessageContentServiceReplyView1"="Kopyala"; -"PIMessageContentServiceReplyView2"="1. E-Parti Ses Uygulaması içinde 【Benim】 - 【Parayı Yükle】'ye gidin ve yükleme yapın"; +"PIMessageContentServiceReplyView2"="1. E-Party Ses Uygulaması içinde 【Benim】 - 【Parayı Yükle】'ye gidin ve yükleme yapın"; "PIMessageContentServiceReplyView3"="2. Müşteri hizmetleri ile iletişime geçin ve yükleme bağlantısını alın"; "PIMessageContentServiceReplyView4"="Müşteri Hizmetleri WeChat: %@ "; "PIMessageContentServiceReplyView5"="Müşteri Hizmetleri Line: %@ "; @@ -3702,7 +3702,7 @@ "1.0.37_text_52" = "Bu özelliği kullanamazsınız."; "20.20.51_text_1" = "E-posta Girişi"; -"20.20.51_text_2" = "Welcome to E-Parti"; +"20.20.51_text_2" = "Welcome to E-Party"; "20.20.51_text_3" = "Lütfen kimlik girin"; "20.20.51_text_4" = "Lütfen e-posta girin"; "20.20.51_text_7" = "Lütfen doğrulama kodunu girin"; diff --git a/YuMi/uz-UZ.lproj/InfoPlist.strings b/YuMi/uz-UZ.lproj/InfoPlist.strings index b4daff8..c72eb91 100644 --- a/YuMi/uz-UZ.lproj/InfoPlist.strings +++ b/YuMi/uz-UZ.lproj/InfoPlist.strings @@ -1,7 +1,7 @@ -NSCameraUsageDescription = "\"E-Parti\" sizning rozilingizni talab qiladi, siz tashrif buyurish, fotosurat olish va rasmlaringizni yuklashdan oldin, keyin ularni shaxsiy asosiy sahifangizda boshqalar ko'rishi uchun ko'rsatish"; +NSCameraUsageDescription = "\"E-Party\" sizning rozilingizni talab qiladi, siz tashrif buyurish, fotosurat olish va rasmlaringizni yuklashdan oldin, keyin ularni shaxsiy asosiy sahifangizda boshqalar ko'rishi uchun ko'rsatish"; NSLocalNetworkUsageDescription = "Ilova tarmog'ingizdagi qurilmalarni topadi va ulanadi"; NSLocationWhenInUseUsageDescription = "Siz joylashuv xizmatlaridan foydalanishingiz va yaqin do'stlarni tavsiya qilishingizdan oldin rozilingiz kerak"; -NSMicrophoneUsageDescription = "\"E-Parti\" ovozli suhbat olib borishdan oldin sizning rozilingizni talab qiladi"; -NSPhotoLibraryAddUsageDescription = "\"E-Parti\" fotosuratlarni albomda saqlashdan oldin sizning rozilingizni talab qiladi"; -NSPhotoLibraryUsageDescription = "\"E-Parti\" albomga kirish va yuklash kerak bo'lgan rasmlarni tanlashdan oldin sizning rozilingizni talab qiladi, keyin ularni shaxsiy asosiy sahifangizda boshqalar ko'rishi uchun ko'rsatish"; +NSMicrophoneUsageDescription = "\"E-Party\" ovozli suhbat olib borishdan oldin sizning rozilingizni talab qiladi"; +NSPhotoLibraryAddUsageDescription = "\"E-Party\" fotosuratlarni albomda saqlashdan oldin sizning rozilingizni talab qiladi"; +NSPhotoLibraryUsageDescription = "\"E-Party\" albomga kirish va yuklash kerak bo'lgan rasmlarni tanlashdan oldin sizning rozilingizni talab qiladi, keyin ularni shaxsiy asosiy sahifangizda boshqalar ko'rishi uchun ko'rsatish"; NSUserTrackingUsageDescription = "Iltimos, sizga shaxsiy aktivlar va xizmatlarni taqdim etish uchun idfa ruxsatini olishimizga ruxsat bering. Sizning ma'lumotlaringiz sizning ruxsatingizsiz boshqa maqsadlar uchun ishlatilmaydi"; diff --git a/YuMi/uz-UZ.lproj/Localizable.strings b/YuMi/uz-UZ.lproj/Localizable.strings index 7b8a369..c4e0bf8 100644 --- a/YuMi/uz-UZ.lproj/Localizable.strings +++ b/YuMi/uz-UZ.lproj/Localizable.strings @@ -393,7 +393,7 @@ "XPLoginPwdViewController4" = "Telefon raqami orqali tizimga kirish"; "XPLoginPwdViewController5" = "Parolni unutdingiz"; -"XPLoginPwdViewController6" = "Iltimos E-Parti hisobini kiriting"; +"XPLoginPwdViewController6" = "Iltimos E-Party hisobini kiriting"; "XPLoginBindPhoneResultViewController0" = "Telefonni bog'lash"; "XPLoginBindPhoneResultViewController1" = "Sizning hozirgi bog'langan telefon raqamingiz"; @@ -455,7 +455,7 @@ "XPShareView5" = "Ulashish muvaffaqiyatsiz"; "XPShareView6" = "Ulashishni bekor qilish"; "XPShareView7" = "Bekor qilish"; -"XPShareView8" = "E-Parti ga kelib, o'z eksklyuziv ovozingizni toping"; +"XPShareView8" = "E-Party ga kelib, o'z eksklyuziv ovozingizni toping"; "XPShareView9" = "Tegishli ilovalar yo'qligi sababli ulashish muvaffaqiyatsiz bo'ldi"; "XPFirstRechargeViewController0" = "1. Har bir kishi faqat birinchi to'ldirish afzalligini bir marta olishi mumkin\n2. Har bir ID va qurilma faqat bir marta ishtirok etishi mumkin."; "XPFirstRechargeViewController1" = "Hozir to'ldirish"; @@ -511,12 +511,12 @@ "HttpRequestHelper1" = "Iltimos tarmoq ulanishini tekshiring"; "HttpRequestHelper2" = "Iltimos tarmoq ulanishini tekshiring"; "HttpRequestHelper3" = "Tizimga kirish sessiyasi muddati tugagan"; -"HttpRequestHelper4" = "E-Parti dam olmoqda, iltimos keyinroq urunib ko'ring"; +"HttpRequestHelper4" = "E-Party dam olmoqda, iltimos keyinroq urunib ko'ring"; "HttpRequestHelper5" = "Serverdan noma'lum xato"; "HttpRequestHelper6" = "Iltimos tarmoq ulanishini tekshiring"; "HttpRequestHelper7" = "Tizimga kirish sessiyasi muddati tugagan."; -"AppDelegate_ThirdConfig0" = "E-Parti"; +"AppDelegate_ThirdConfig0" = "E-Party"; "XPMineNotificaPresenter0" = "Tizim bildirishnomalari"; "XPMineNotificaPresenter1" = "O'chirilganda, tizim xabarlar va rasmiy yordamchilar endi ogohlantirmaydi"; @@ -911,7 +911,7 @@ "XPIAPRechargeViewController2" = "To'ldirishni tasdiqlash"; "XPIAPRechargeViewController3" = "《Foydalanuvchi To'ldirish Shartnomasi》"; "XPIAPRechargeViewController4" = "Men o'qidim va qabul qildim"; -"XPIAPRechargeViewController5" = "Savollar bo'lsa, iltimos mijozlar xizmatiga murojaat qiling, E-Parti ID"; +"XPIAPRechargeViewController5" = "Savollar bo'lsa, iltimos mijozlar xizmatiga murojaat qiling, E-Party ID"; "XPIAPRechargeViewController6" = "Mening hisobim"; "XPIAPRechargeViewController7" = "Eslatma"; "XPIAPRechargeViewController8" = "To'ldirish muvaffaqiyatsiz. Iltimos yordam uchun mijozlar xizmatiga murojaat qiling."; @@ -1608,7 +1608,7 @@ "RoomHeaderView1" = "Onlayn: %ld ID: %ld"; "RoomHeaderView2" = "Onlayn: %ld ID: %ld"; "RoomHeaderView3" = "Havolani nusxalash"; -"RoomHeaderView4" = "E-Parti-ga keling, o'yinlar o'ynang va do'stlar orttiring"; +"RoomHeaderView4" = "E-Party-ga keling, o'yinlar o'ynang va do'stlar orttiring"; "RoomHeaderView5" = "Go'zal ovozli chiroyli odamlar ball yutishadi, birga o'ynaylik~"; "RoomHeaderView6" = "Xatcho'p muvaffaqiyatli yaratildi"; "RoomHeaderView7" = "Ulashish muvaffaqiyatli amalga oshirildi"; @@ -2283,7 +2283,7 @@ Tasdiqlangandan so'ng, sekretar sizga uni chop etishda yordam beradi va sizni xa "XPLoginPwdViewController3" = "Iltimos, parolni kiriting"; "XPLoginPwdViewController4" = "Telefon raqami orqali tizimga kirish"; "XPLoginPwdViewController5" = "Parolni unutdingiz"; -"XPLoginPwdViewController6" = "Iltimos, E-Parti akkauntingizni kiriting"; +"XPLoginPwdViewController6" = "Iltimos, E-Party akkauntingizni kiriting"; "XPLoginBindPhoneResultViewController0" = "Telefonni bog'lash"; "XPLoginBindPhoneResultViewController1" = "Joriy bog'langan telefon raqami"; @@ -3386,7 +3386,7 @@ Tasdiqlangandan so'ng, sekretar sizga uni chop etishda yordam beradi va sizni xa "PIMessageContentServiceReplyView0"="Qanday to'ldirish kerak:"; "PIMessageContentServiceReplyView1"="Nusxalash"; -"PIMessageContentServiceReplyView2"="1. E-Parti Voice ilovasidagi 【Mening】-- 【Tanga to'ldirish】 bo'limiga o'ting va to'ldiring"; +"PIMessageContentServiceReplyView2"="1. E-Party Voice ilovasidagi 【Mening】-- 【Tanga to'ldirish】 bo'limiga o'ting va to'ldiring"; "PIMessageContentServiceReplyView3"="2. Xizmat ko'rsatuvchi bilan bog'laning"; "PIMessageContentServiceReplyView4"="Xizmat ko'rsatuvchi WeChat: %@ "; "PIMessageContentServiceReplyView5"="Xizmat ko'rsatuvchi telefon: %@ "; @@ -3896,7 +3896,7 @@ Tasdiqlangandan so'ng, sekretar sizga uni chop etishda yordam beradi va sizni xa "1.0.37_text_52" = "Siz bu funksiyadan foydalan olmaysiz."; "20.20.51_text_1" = "Email Login"; -"20.20.51_text_2" = "E-Parti ga xush kelibsiz"; +"20.20.51_text_2" = "E-Party ga xush kelibsiz"; "20.20.51_text_3" = "Iltimos ID kiriting"; "20.20.51_text_4" = "Iltimos email kiriting"; "20.20.51_text_7" = "Iltimos tasdiqlash kodi kiriting"; diff --git a/YuMi/zh-Hant.lproj/InfoPlist.strings b/YuMi/zh-Hant.lproj/InfoPlist.strings index c59e884..8b340ec 100644 --- a/YuMi/zh-Hant.lproj/InfoPlist.strings +++ b/YuMi/zh-Hant.lproj/InfoPlist.strings @@ -1,8 +1,8 @@ -NSCameraUsageDescription = "「E-Parti」需要您的同意,才可以訪問進行拍照並上傳您的圖片,然後展示在您的個人主頁上,便於他人查看"; +NSCameraUsageDescription = "「E-Party」需要您的同意,才可以訪問進行拍照並上傳您的圖片,然後展示在您的個人主頁上,便於他人查看"; NSLocalNetworkUsageDescription = "此App將可發現和連接到您所用網絡上的設備"; NSLocationWhenInUseUsageDescription = "需要您的同意,才可以進行定位服務,推薦附近好友"; -NSMicrophoneUsageDescription = "「E-Parti」需要您的同意,才可以進行語音聊天"; -NSPhotoLibraryAddUsageDescription = "「E-Parti」需要您的同意,才可以存儲相片到相冊"; -NSPhotoLibraryUsageDescription = "「E-Parti」需要您的同意,才可以訪問相冊並選擇您需要上傳的圖片,然後展示在您的個人主頁上,便於他人查看"; +NSMicrophoneUsageDescription = "「E-Party」需要您的同意,才可以進行語音聊天"; +NSPhotoLibraryAddUsageDescription = "「E-Party」需要您的同意,才可以存儲相片到相冊"; +NSPhotoLibraryUsageDescription = "「E-Party」需要您的同意,才可以訪問相冊並選擇您需要上傳的圖片,然後展示在您的個人主頁上,便於他人查看"; NSUserTrackingUsageDescription = "請允許我們獲取您的IDFA權限,可以為您提供個性化活動和服務。未經您的允許,您的信息將不作其他用途。"; diff --git a/YuMi/zh-Hant.lproj/Localizable.strings b/YuMi/zh-Hant.lproj/Localizable.strings index a2a24ac..e09001c 100644 --- a/YuMi/zh-Hant.lproj/Localizable.strings +++ b/YuMi/zh-Hant.lproj/Localizable.strings @@ -60,7 +60,7 @@ "XPShareView5" = "分享失敗"; "XPShareView6" = "取消分享"; "XPShareView7" = "取消"; -"XPShareView8" = "來E-Parti,邂逅你的專屬聲音"; +"XPShareView8" = "來E-Party,邂逅你的專屬聲音"; "XPShareView9" = "未安装相关App,分享失败"; ///XPFirstRechargeViewController.m "XPFirstRechargeViewController0" = "1.每人僅可獲得1次首充福利\n2.每個ID、設備僅能參加一次。"; @@ -128,13 +128,13 @@ "HttpRequestHelper1" = "請檢查網絡連接"; "HttpRequestHelper2" = "請檢查網絡連接"; "HttpRequestHelper3" = "登錄已過期"; -"HttpRequestHelper4" = "E-Parti開小差中~請稍後再試"; +"HttpRequestHelper4" = "E-Party開小差中~請稍後再試"; "HttpRequestHelper5" = "接口報錯信息未知"; "HttpRequestHelper6" = "請檢查網絡連接"; "HttpRequestHelper7" = "登錄已過期。"; -"AppDelegate_ThirdConfig0" = "E-Parti"; +"AppDelegate_ThirdConfig0" = "E-Party"; "XPMineNotificaPresenter0" = "系統通知"; "XPMineNotificaPresenter1" = "關閉後,系統消息和官方小秘書不再提示"; @@ -545,7 +545,7 @@ "XPIAPRechargeViewController2" = "確定充值"; "XPIAPRechargeViewController3" = "《用戶充值協議》"; "XPIAPRechargeViewController4" = "已閱讀並同意"; -"XPIAPRechargeViewController5" = "如有任何問題請咨詢客服,E-Parti號"; +"XPIAPRechargeViewController5" = "如有任何問題請咨詢客服,E-Party號"; "XPIAPRechargeViewController6" = "我的賬戶"; "XPIAPRechargeViewController7" = "提示"; "XPIAPRechargeViewController8" = "儲值失敗,請聯系客服處理~"; @@ -1263,7 +1263,7 @@ "RoomHeaderView1" = "在線:%ld ID:%ld"; "RoomHeaderView2" = "在線:%ld ID:%ld"; "RoomHeaderView3" = "複製鏈接"; -"RoomHeaderView4" = "來E-Parti,開黑交友玩遊戲"; +"RoomHeaderView4" = "來E-Party,開黑交友玩遊戲"; "RoomHeaderView5" = "人美聲甜帶上分,一起來玩吧~"; "RoomHeaderView6" = "收藏成功"; "RoomHeaderView7" = "分享成功"; @@ -2204,7 +2204,7 @@ "XPLoginPwdViewController3" = "請輸入密碼"; "XPLoginPwdViewController4" = "手機號登錄"; "XPLoginPwdViewController5" = "忘記密碼"; -"XPLoginPwdViewController6" = "請輸入E-Parti賬號"; +"XPLoginPwdViewController6" = "請輸入E-Party賬號"; "XPLoginBindPhoneResultViewController0" = "綁定手機"; "XPLoginBindPhoneResultViewController1" = "您當前綁定的手機號為"; @@ -3075,7 +3075,7 @@ "PIMessageContentServiceReplyView0"="如何儲值:"; "PIMessageContentServiceReplyView1"="復製"; -"PIMessageContentServiceReplyView2"="1.在E-Parti語音App內前往【我的】-- 【儲值金幣】進行儲值"; +"PIMessageContentServiceReplyView2"="1.在E-Party語音App內前往【我的】-- 【儲值金幣】進行儲值"; "PIMessageContentServiceReplyView3"="2.聯系客服獲取儲值鏈接"; "PIMessageContentServiceReplyView4"="客服WeChat: %@ "; "PIMessageContentServiceReplyView5"="客服Line:%@ "; @@ -3572,7 +3572,7 @@ "20.20.51_text_1" = "Email 登入"; -"20.20.51_text_2" = "Welcome to E-Parti"; +"20.20.51_text_2" = "Welcome to E-Party"; "20.20.51_text_3" = "請輸入ID"; "20.20.51_text_4" = "請輸入信​​箱"; "20.20.51_text_7" = "請輸入驗證碼";