Files
e-party-iOS/issues/多语言问题修复.md
edwinQQQ 567b1f3fd9 feat: 全面替换硬编码文本并修复编译错误
- 替换多个视图中的硬编码文本为本地化字符串,增强多语言支持。
- 修复编译错误,包括删除重复文件和修复作用域问题。
- 更新本地化文件,新增40+个本地化键值对,确保文本正确显示。
- 添加语言切换测试区域,验证文本实时更新功能。
2025-07-29 15:31:19 +08:00

3.5 KiB
Raw Blame History

多语言问题修复计划

问题描述

项目配置了多语言支持,默认英文,但应用仍显示中文。原因是大部分视图使用 NSLocalizedString,它会读取系统语言设置而不是应用内保存的用户语言选择。

解决方案

1. 修复 LocalizationManager

  • 启用了注释的 String 扩展
  • 添加了全局 LocalizedString 方法
  • 添加了 LocalizedTextModifier 结构体

2. 替换关键界面的本地化方法

  • LoginView - 应用标题、登录按钮
  • UserAgreementView - 用户协议文本
  • FeedListView - 页面标题、空状态、标语
  • IDLoginView - 标题、占位符、按钮文本
  • EMailLoginView - 标题、按钮文本
  • LanguageSettingsView - 添加测试区域
  • MeView - 用户昵称、ID显示、加载状态、错误信息

3. 修复 MeView 显示问题

  • 修复 MainFeature 中的数据加载逻辑
  • 在 accountModelLoaded 中添加 MeView 数据加载触发
  • 确保 uid 正确设置时触发数据加载

4. 全面替换硬编码文本

  • EditFeedView - 上传进度提示、标题、按钮文本、占位符文本
  • WebView - 错误提示、操作按钮
  • AppSettingView - 错误提示、按钮文本、昵称限制
  • ImagePreviewView - 加载状态、操作按钮
  • ImagePickerWithPreviewView - 拍照、相册选择按钮
  • TestView - 测试页面文本
  • LanguageSettingsView - 语言设置相关文本、测试区域
  • ConfigView - 配置测试相关文本
  • ScreenAdapterExample - 示例文本

5. 修复编译错误

  • 删除重复的 ContentView.swift 文件
  • 修复 EditFeedView 中的作用域问题
  • 修复本地化字符串的调用语法
  • 确保所有变量在正确的作用域内

6. 更新本地化文件

  • en.lproj/Localizable.strings 中添加英文翻译
  • zh-Hans.lproj/Localizable.strings 中添加中文翻译
  • 新增 40+ 个本地化键值对

7. 新增功能

  • 全局 LocalizedString(key, comment:) 方法
  • String 扩展:"key".localized
  • 语言切换测试区域

本地化键命名规范

  • edit_feed.* - 编辑动态相关
  • web_view.* - 网页视图相关
  • language_settings.* - 语言设置相关
  • app_settings.* - 应用设置相关
  • test.* - 测试相关
  • image_picker.* - 图片选择相关
  • content_view.* - 内容视图相关
  • screen_adapter.* - 屏幕适配相关
  • config.* - 配置相关

使用方法

方法1使用全局方法

Text(LocalizedString("login.app_title", comment: ""))

方法2使用 String 扩展

Text("login.app_title".localized)

方法3带参数的本地化

Text(LocalizedString("edit_feed.uploading_progress", comment: "").localized(arguments: Int(progress * 100)))

测试验证

  1. 在语言设置界面可以看到测试区域
  2. 切换语言后,测试区域的文本会实时更新
  3. 所有使用 LocalizedString 的界面都会正确显示选择的语言
  4. 动态文本(进度、时间戳等)正确显示
  5. 所有硬编码文本已替换为本地化字符串

完成状态

  • 核心多语言功能修复
  • MeView 显示问题修复
  • 所有硬编码文本替换完成
  • 本地化文件更新完成
  • 测试验证通过

后续工作

  • 继续监控是否有遗漏的硬编码文本
  • 确保所有用户可见的文本都使用新的本地化方法
  • 测试各种语言切换场景