如何本地化iOS Settings Bundle?多语言适配与Root strings文件自动生成
嘿,刚好折腾过iOS Settings Bundle的本地化,给你一步步讲清楚:
iOS Settings Bundle 本地化指南(含自动生成Strings文件)
一、已有英文标题,添加其他语言本地化
首先得把现有英文标题改成本地化关联的格式,再添加其他语言的翻译:
调整Root.plist的Title格式
打开Settings.bundle/Root.plist,把每个设置项的Title值从直接的英文(比如Login)改成$LocalizedString(自定义键名),比如$LocalizedString(login_title)。这里的键名要唯一,方便后续对应翻译。添加目标语言的本地化文件
- 在Xcode中选中
Settings.bundle里的Root.plist - 打开右侧的File Inspector(快捷键⌥⌘1),找到Localization区域
- 点击
+号,选择你要添加的语言(比如简体中文、日文等),Xcode会自动生成对应语言的.lproj文件夹,里面包含Root.strings文件
- 在Xcode中选中
填充翻译内容
打开目标语言的Root.strings(比如zh-Hans.lproj/Root.strings),按照"键名" = "翻译后的标题";的格式填写,比如:"login_title" = "登录"; "app_settings_title" = "应用设置";英文的翻译直接写在
en.lproj/Root.strings里,对应你原来的英文标题:"login_title" = "Login"; "app_settings_title" = "App Settings";
二、自动生成Root.strings文件(从现有Title提取)
如果你的Root.plist里已经有大量英文Title,不想手动一个个写键和字符串,可以用这两种方法自动生成:
方法1:Xcode自带的本地化导出/导入
这是最省心的方式,适合新手:
- 选中
Settings.bundle,点击顶部菜单Editor → Export for Localization... - 选择保存路径,Xcode会生成一个
.xliff文件,里面包含所有需要本地化的字符串 - 你可以直接在这个文件里翻译其他语言,之后点击Editor → Import Localizations...,Xcode会自动帮你生成各个语言的
Root.strings文件
方法2:终端脚本一键提取
如果你喜欢用命令行,用这个脚本可以快速从Root.plist提取Key和Title生成英文的Root.strings:
# 先cd到你的Settings.bundle目录下 cd /path/to/your/Project/Settings.bundle # 执行脚本生成en.lproj/Root.strings plutil -convert xml1 -o - Root.plist | grep -A1 -B1 '<key>Title</key>' | awk ' /<key>Key<\/key>/ {getline; gsub(/<string>|<\/string>/, "", $0); key=$0} /<key>Title<\/key>/ {getline; gsub(/<string>|<\/string>/, "", $0); print "\"" key "\" = \"" $0 "\";"} ' > en.lproj/Root.strings
脚本会自动遍历所有设置项,把Key和对应的Title转换成.strings格式。之后你只需要把这个文件复制到其他语言的.lproj文件夹,修改右侧的翻译即可。
小提示
- 注意字符串里的特殊字符(比如双引号)需要转义,比如
"He said \"Hello\"" - 测试时记得切换系统语言,然后打开系统设置里的你的App,确认翻译生效
- 如果有子页面(比如
Child.plist),本地化流程和Root.plist完全一样
内容的提问来源于stack exchange,提问作者user924
相关产品推荐
相关产品推荐

