SwiftUI本地化:如何拆分使用多个字符串目录管理翻译内容
SwiftUI 拆分多字符串目录实现方案
完全可以拆分多个字符串目录来管理不同模块/视图的翻译内容,之前编译不识别是因为没做对配置和调用方式,具体步骤如下:
- 创建多份.strings文件:按视图或模块创建独立的strings文件,比如
HomeView.strings、SettingsView.strings,每个文件存放对应模块的翻译键值对。 - 开启本地化支持:选中新创建的strings文件,在右侧检查器的「Localization」栏里,勾选你需要支持的语言(比如中文、英文),Xcode会自动生成对应语言的本地化目录结构。
- 代码中指定tableName调用:默认的
NSLocalizedString和SwiftUI的Text会读取Localizable.strings,所以调用时需要指定对应文件的table名称(就是strings文件的文件名,不带后缀):- 直接用Text:
Text("home_welcome", tableName: "HomeView") - 用NSLocalizedString:
NSLocalizedString("settings_title", tableName: "SettingsView", comment: "设置页标题")
- 直接用Text:
- 可选:封装扩展简化调用:如果觉得每次写tableName麻烦,可以给String加个扩展:
extension String { func localized(in table: String) -> String { NSLocalizedString(self, tableName: table, comment: "") } } // 使用示例: Text("profile_edit".localized(in: "ProfileView"))
排查编译不识别的常见问题
- 确认新的strings文件已加入当前target(选中文件,右侧检查器「Target Membership」勾选你的app target)
- 检查tableName和strings文件名完全一致(注意大小写敏感)
- 确保对应语言的strings文件里存在对应的key,键值对格式正确(比如
"key" = "翻译内容";)
内容的提问来源于stack exchange,提问作者kiwidiwi
相关产品推荐
相关产品推荐

