You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.0 KiB

多语言支持说明

功能概述

MyQrCode 应用现在支持多国语言,包括英文和中文,英文为默认语言。

支持的语言

  • 🇺🇸 English (en) - 默认语言
  • 🇨🇳 中文简体 (zh-Hans)

文件结构

MyQrCode/
├── en.lproj/
│   └── Localizable.strings          # 英文本地化字符串
├── zh-Hans.lproj/
│   └── Localizable.strings          # 中文本地化字符串
├── LanguageManager.swift             # 语言管理器
├── LanguageSettingsView.swift        # 语言设置界面
├── ContentView.swift                 # 主界面(已本地化)
├── ScannerView.swift                 # 扫描界面(已本地化)
└── Info.plist                        # 语言配置

主要功能

1. 语言切换

  • 在主界面右上角显示当前语言标识
  • 点击语言标识进入语言设置界面
  • 支持实时语言切换,无需重启应用

2. 本地化内容

  • 应用标题: MyQrCode
  • 主界面: 条码扫描器 / Barcode Scanner
  • 扫描界面: 扫描指令、按钮文本、提示信息
  • 扫描线样式: 5种样式的本地化名称
  • 错误信息: 扫描失败提示
  • 语言设置: 设置界面的所有文本

3. 语言管理

  • 自动保存用户语言选择
  • 应用启动时恢复上次选择的语言
  • 支持系统语言检测

使用方法

切换语言

  1. 在主界面点击右上角的语言标识
  2. 在语言设置界面选择目标语言
  3. 语言立即生效,无需重启

添加新语言

  1. 创建新的 .lproj 文件夹(如 ja.lproj
  2. Localizable.strings 中添加翻译
  3. Language 枚举中添加新语言
  4. Info.plist 中添加语言代码

技术实现

语言管理器 (LanguageManager)

  • 单例模式管理语言状态
  • 使用 UserDefaults 持久化语言设置
  • 提供本地化字符串获取方法

本地化扩展

extension String {
    var localized: String {
        return LanguageManager.shared.localizedString(for: self)
    }
}

通知系统

  • 语言变化时发送 languageChanged 通知
  • 界面自动响应语言变化

本地化字符串示例

英文 (en.lproj/Localizable.strings)

"main_title" = "Barcode Scanner";
"scan_instruction" = "Place QR code or barcode in the frame";

中文 (zh-Hans.lproj/Localizable.strings)

"main_title" = "条码扫描器";
"scan_instruction" = "将二维码或条形码放入框内";

注意事项

  1. 默认语言: 英文为默认语言,确保所有字符串都有英文版本
  2. 字符串键: 使用有意义的键名,便于维护
  3. 格式字符串: 支持 String(format:) 的格式化字符串
  4. 实时更新: 语言切换后界面立即更新
  5. 持久化: 语言选择保存在 UserDefaults 中

扩展建议

  • 添加更多语言支持(日语、韩语、法语等)
  • 支持系统语言自动检测
  • 添加语言特定的日期和数字格式
  • 支持 RTL 语言(阿拉伯语、希伯来语)