遇到的问题
关于国际化的文章有很多,大致是让我们在 Xcode
中去新建一个 .strings
文件,然后点击右侧的Localized
,再在对应语言中去添加key - value
达到多语言。这类的文章有很多,在此就不赘述了。
但是有一种情况,我们有一些权限的提示语,甚至是 App 的显示名称,这些都是在 info.plist
中去添加的,那要怎么做呢?
错误的做法
可能你会单击当前工程的 info.plist
,然后点击右侧的localized
这样做显然是不对的。哪怕你生成了一串 .strings 文件,也更改了 info.plist 的路径(而且会生成一个默认语言 .strings(Base)
)
正确的做法
- 新建一个
.strings
文件,叫做InfoPlist.strings
(文件名必须是这个) - 新建以后,点击右侧的
localized
才有意义。 - 关键的步骤来了,这时候,点击我们的
info.plist
,右键选择open as source code
查看我们所要获取权限的原始key
也可以先在 info.plist
内部点击右键,查看权限本身的 key 名
可以看到右键打开的source code
是一个 xml
文件,找到对应的key
,复制。
需要注意的点
参考文档中有一条,我这里摘抄一下:
注意,层级要正确,如果在Info.plist里面是在最外边可以这么写,但是如果是在一个字典中,那么也需要把字典加进去,保持层级不变,不能只写想修改的那个key值。比如快捷菜单的层级在Info.plist里面是这样,如果想修改「查看密码」这个文字
<key>UIApplicationShortcutItems</key>
<array>
<dict>
<key>UIApplicationShortcutItemIconType</key>
<string>UIApplicationShortcutIconTypeLove</string>
<key>UIApplicationShortcutItemTitle</key>
<string>查看密码</string>
<key>UIApplicationShortcutItemType</key>
<string>all</string>
</dict>
</array>
那么你在多语言里面就要这么写
"UIApplicationShortcutItems" = (
{
"UIApplicationShortcutItemType" = all;
"UIApplicationShortcutItemTitle" = "View Password";
"UIApplicationShortcutItemIconType" = "UIApplicationShortcutIconTypeLove";
},
);