iOS APP 语言国际化分为两部分,一是 app 名称语言国际化,二是APP 内容国际化。
两者可以都做国际化或者只做一个。两个部分的国际化基本相同。
以一款开源的天气app 为验证项目,基本步骤如下:
基本配置Xcode配置部分:
1,先创建Strings File (若不先创建此文件而进行第二步,第二步添加不上本地化语言类型)
按下键盘上的command + N,选择Strings File(iOS->Resource->Strings File)
命名必须为:InfoPlist (默会自动添加文件类型后缀.strings)
注意:target 勾线项目(默认会勾)
2,添加需要国际化/本地化的语言
如下图,选中project->Info->Localizations,然后点击"+",全部勾选resource File
我添加好了五中语言:简体中文、英语、法语、意大利语、日语
3,选中第一步创建的InfoPlist.strings, Xcode右侧,如下图,载入国际化语言文件,勾选语言
本地化后的结果,如下两图
InfoPlist.strings文件下包含了这五种语言的文件。原理:程序启动时,会根据操作系统设置的语言,自动加载InfoPlist.strings文件下对应的语言文件,然后显示应用程序的名字。
(一)app名称国际化。
在上面的五种语言.strings内分别添加对应的语言文字,格式如下,参考英语和日语截图
// Localizable App Name是App在英语环境环境下显示的名称
CFBundleDisplayName =
"对应语言的app名称"
;
(二)代码中字符串的本地化
代码界面的语言国际化和上面的步骤基本一致,只是文件名不一样。
1, 和应用名称本地化一样,首先需要command + N,选择iOS -> Resource -> Strings File,
但文件名必须为:Localizable (默会自动添加文件类型后缀.strings)
2,参考开始的“基本配置Xcode配置部分”第3步添加国际化语言。
3,然后我们只需要在Localizable.strings下对应的语言文件中,分别以Key-Value的形式,为代码中每一个需要本地化的字符串赋值,如下图参考:
4,在代码中使用,定义一个宏。
// NSLocalizedString(key, comment) 本质
// NSlocalizeString 第一个参数是内容,根据第一个参数去对应语言的文件中取对应的字符串,第二个参数将会转化为字符串文件里的注释,可以传nil,也可以传空字符串@""。
#define NSLocalizedString(key, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]