
- 替换多个视图中的硬编码文本为本地化字符串,增强多语言支持。 - 修复编译错误,包括删除重复文件和修复作用域问题。 - 更新本地化文件,新增40+个本地化键值对,确保文本正确显示。 - 添加语言切换测试区域,验证文本实时更新功能。
3.5 KiB
3.5 KiB
多语言问题修复计划
问题描述
项目配置了多语言支持,默认英文,但应用仍显示中文。原因是大部分视图使用 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)))
测试验证
- 在语言设置界面可以看到测试区域
- 切换语言后,测试区域的文本会实时更新
- 所有使用
LocalizedString
的界面都会正确显示选择的语言 - 动态文本(进度、时间戳等)正确显示
- 所有硬编码文本已替换为本地化字符串
完成状态
- ✅ 核心多语言功能修复
- ✅ MeView 显示问题修复
- ✅ 所有硬编码文本替换完成
- ✅ 本地化文件更新完成
- ✅ 测试验证通过
后续工作
- 继续监控是否有遗漏的硬编码文本
- 确保所有用户可见的文本都使用新的本地化方法
- 测试各种语言切换场景