博客主页
【swift】让你的 App 轻松支持多语言
【swift】让你的 App 轻松支持多语言

Author:

CC-star

©

Wordage:

共计 3067 字

needs:

约 2 分钟

Popular:

3 ℃

Created:

目 录

一、什么是本地化(Localization)

本地化(Localization) 是指让应用程序能够根据用户的语言和地区自动显示相应的内容。
例如:

  • 中文用户看到「登录」
  • 英文用户看到「Login」
  • 日语用户看到「ログイン」

在 Swift / iOS 开发中,本地化字符串通常通过 NSLocalizedString 实现。


二、NSLocalizedString 的基本用法

最基础的语法如下:

NSLocalizedString("Login", comment: "登录按钮标题")
  • "Login" 是字符串键(key)
  • "登录按钮标题" 是注释(供翻译人员理解使用,不会显示在界面上)

系统会自动根据当前语言环境,在对应的 .strings 文件中查找该 key 的翻译。


三、创建 Localizable.strings 文件

  1. 在 Xcode 中选择:

    File → New → File → Strings File
  2. 命名为 Localizable.strings
  3. 选中文件 → 在右侧的 File Inspector 中点击 Localize...
  4. 选择要支持的语言,例如:

    • English
    • Chinese (Simplified)
    • Japanese

这样 Xcode 会自动为每种语言生成一个对应目录:

en.lproj/Localizable.strings
zh-Hans.lproj/Localizable.strings
ja.lproj/Localizable.strings

四、在 .strings 文件中添加内容

示例:

英文版 (en.lproj/Localizable.strings)

"Login" = "Login";
"Email" = "Email";
"Password" = "Password";

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

"Login" = "登录";
"Email" = "邮箱";
"Password" = "密码";

日文版 (ja.lproj/Localizable.strings)

"Login" = "ログイン";
"Email" = "メール";
"Password" = "パスワード";

五、在 Swift 中使用本地化字符串

直接调用:

Text(NSLocalizedString("Login", comment: "登录按钮标题"))

或者用在控制器里:

title = NSLocalizedString("Settings", comment: "设置页标题")

六、优化写法:字符串扩展(推荐 ✅)

在项目中频繁使用 NSLocalizedString 会显得冗长,
我们可以通过 String 扩展 提供更简洁的写法:

extension String {
    /// 快速返回本地化后的字符串
    var LocalizedStr: String {
        return NSLocalizedString(self, comment: "")
    }
}

使用方式更优雅:

Text("Login".LocalizedStr)
TextField("Email".LocalizedStr, text: $email)

✨ 优点:

  • 代码更简洁
  • 可读性更高
  • 不需要重复填写注释参数

七、带格式的本地化字符串

有时我们需要插入变量,例如:

let name = "小明"
Text(String(format: NSLocalizedString("Hello, %@!", comment: "问候语"), name))

.strings 文件中对应:

"Hello, %@!" = "你好,%@!";

这样不同语言都能保持正确语法结构。


八、支持动态语言切换(可选进阶)

如果希望用户能在 App 内切换语言(不依赖系统设置),
可以使用第三方库(如 Localize-Swift)或自定义本地化管理器。
例如:

Localize.setCurrentLanguage("zh-Hans")

然后重新刷新视图即可。


九、常见问题总结

问题原因解决方法
翻译没显示没有在对应 .lproj 文件添加 key检查字符串文件是否同步
中文正常,英文不显示没设置英文语言资源在 Localizable.strings(en) 中补充内容
注释出现在界面上写错了参数位置确保 comment 不在显示文本位置
新增语言没生效没勾选 Localize 文件右键 Localizable.strings → Localize...

🔚 十、总结

Swift 本地化流程图:

代码调用 → NSLocalizedString(key) → 查找系统语言目录 → 对应的 Localizable.strings → 返回翻译结果

最佳实践:

  1. 所有用户可见文字均通过 NSLocalizedString 处理;
  2. 使用 .LocalizedStr 扩展简化调用;
  3. 为每个字符串添加清晰注释;
  4. 测试多语言切换场景,确保排版和长度兼容。
文章二维码
【swift】让你的 App 轻松支持多语言
共计 0 条评论,点此发表评论
博客主页 数据猫 漫游于星空的数据猫
技术支持 CC 数据猫. 2025
打赏图
打赏博主
欢迎
欢迎
欢迎访问数据猫
搜 索
足 迹
分 类
  • 简文
  • 技术
  • 娱乐