fix: 统一应用名称为 "E-Party" 并更新相关描述

主要变更:
1. 在 Info.plist 中将应用名称和描述中的 "E-Parti" 替换为 "E-Party"。
2. 更新多个本地化字符串和提示信息,确保一致性。
3. 修改部分代码中的错误提示信息,使用本地化字符串替代硬编码文本。

此更新旨在提升品牌一致性,确保用户在使用过程中获得统一的体验。
This commit is contained in:
edwinQQQ
2025-10-15 19:11:01 +08:00
parent 2d0063396c
commit 90360448a1
35 changed files with 498 additions and 197 deletions

View File

@@ -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;

View File

@@ -58,7 +58,7 @@ class EPImageUploader {
lock.unlock()
semaphore.signal()
DispatchQueue.main.async {
failure("图片压缩失败")
failure(YMLocalizedString("error.image_compress_failed"))
}
return
}

View File

@@ -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 {

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
///

View File

@@ -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,

View File

@@ -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,
// 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)

View File

@@ -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)
}
}
@@ -601,11 +601,11 @@ extension EPEditSettingViewController: UIImagePickerControllerDelegate, UINaviga
//
DispatchQueue.main.async {
let alert = UIAlertController(
title: "更新失败",
message: msg ?? "头像更新失败,请稍后重试",
title: YMLocalizedString("common.update_failed"),
message: msg ?? YMLocalizedString("setting.avatar_update_failed"),
preferredStyle: .alert
)
alert.addAction(UIAlertAction(title: "确定", style: .default))
alert.addAction(UIAlertAction(title: YMLocalizedString("common.confirm"), style: .default))
self?.present(alert, animated: true)
}
})

View File

@@ -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,17 +150,73 @@
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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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)
}

View File

@@ -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];

View File

@@ -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);
}
// nilCell
}
}
@@ -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;

View File

@@ -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"
)

View File

@@ -57,7 +57,7 @@
<key>FacebookClientToken</key>
<string>189d1a90712cc61cedded4cf1372cb21</string>
<key>FacebookDisplayName</key>
<string>E-Parti</string>
<string>E-Party</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSApplicationQueriesSchemes</key>
@@ -96,17 +96,17 @@
<true/>
</dict>
<key>NSCameraUsageDescription</key>
<string>"E-Parti"需要您的同意,才可以访问进行拍照并上传您的图片,然后展示在您的个人主页上,便于他人查看</string>
<string>"E-Party"需要您的同意,才可以访问进行拍照并上传您的图片,然后展示在您的个人主页上,便于他人查看</string>
<key>NSLocalNetworkUsageDescription</key>
<string>此App将可发现和连接到您所用网络上的设备。</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>"E-Parti"需要您的同意,才可以进行定位服务,推荐附近好友</string>
<string>"E-Party"需要您的同意,才可以进行定位服务,推荐附近好友</string>
<key>NSMicrophoneUsageDescription</key>
<string>"E-Parti"需要您的同意,才可以进行语音聊天</string>
<string>"E-Party"需要您的同意,才可以进行语音聊天</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>"E-Parti"需要您的同意,才可以存储相片到相册</string>
<string>"E-Party"需要您的同意,才可以存储相片到相册</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>"E-Parti"需要您的同意,才可以访问相册并选择您需要上传的图片,然后展示在您的个人主页上,便于他人查看</string>
<string>"E-Party"需要您的同意,才可以访问相册并选择您需要上传的图片,然后展示在您的个人主页上,便于他人查看</string>
<key>NSUserTrackingUsageDescription</key>
<string>請允許我們獲取您的IDFA權限可以為您提供個性化活動和服務。未經您的允許您的信息將不作其他用途。</string>
<key>UIApplicationSupportsIndirectInputEvents</key>

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -21,7 +21,7 @@
if (self) {
_title = title ?: @"";
_subtitle = subtitle ?: @"";
_appName = appName ?: @"E-Parti";
_appName = appName ?: @"E-Party";
_url = url;
_image = image;
_appIcon = appIcon;

View File

@@ -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" = "يرجى إدخال رمز التحقق";

View File

@@ -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";

View File

@@ -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 */

View File

@@ -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";

View File

@@ -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";

View File

@@ -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";

View File

@@ -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";

View File

@@ -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, чтобы предоставить вам персонализированные мероприятия и услуги. ваша информация не будет использоваться для других целей без вашего разрешения";

View File

@@ -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" = "Пожалуйста, введите код подтверждения";

View File

@@ -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";

View File

@@ -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";

View File

@@ -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";

View File

@@ -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";

View File

@@ -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權限可以為您提供個性化活動和服務。未經您的允許您的信息將不作其他用途。";

View File

@@ -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" = "請輸入驗證碼";