macOS App国际化和本地化
目录
App为什么要国际化和本地化
众所周知,App Store可在150多个不同的国家/地区销售,所以App国际化是迈向国际市场的第一步,而App国际化就是让App能在不同的国家和地区使用,例如Google Chrome,Wechat等。本地化是将App翻译成多种语言的过程。也就是说想让更多的人使用我们开发的App,就必须走向国际化。
如何配置App国际化
在项目中添加需要国际化/本地化的语言
打开Xcode,选中project->Info->Localizations,然后点击”+”,添加需要国际化/本地化的语言。
点击”+” 后,选择你需要添加的的语言,这里添加中文简体为例。
点击对应语言后,会弹出如下对话库,点击”Finish”即可。
添加其他语言也是同样操作,添加完成之后我们发现项目中的,storyboard和xib文件前面多了一个可展开的小三角。
展开后,里面的.string文件,就是storyboard或xib的对应语言文件。
App名称本地化
在项目中添加新文件,选择Strings File。
点击”Next”。
注意这里的名字,必须是InfoPlist
,如果名字不是,后面的操作将无效。
当创建好InfoPlist.strings文件之后,选择InfoPlist.strings,在Xcode的File inspection(Xcode右侧文件检查器)中点击Localize,目的是选择我们需要本地化的语言。
点击Localize之后,会弹出这个小窗口,在小窗口中选择对应的语言。
点击Localize后,会发现Xcode右侧的File inspection多了我们选择的语言项目。
勾选上对应的语言,InfoPlist.strings文件前面也会多出了一个可展开的小三角。
我们在不同的语言中添加:
CFBundleDisplayName = "对应语言App名称";
至此,我们完成App名称本地化。
字符串本地化
字符串本地化不步骤和App名称本地一样,唯一区别在于名字,App名称本地化中的string文件的名字为InfoPlist
,而字符串本地化string文件的名称则需是Localizable
。
注意:所有的strings文件中的内容都是以键值对形式存放。
既然字符串本地化了,那就少不了在代码中引用,字符串本地化的值。我们只需要使用Foundation框架自带的NSLocalizedString(key, comment)这个宏根据Key获取对应的字符串,然后赋值给代码中的字符串。
例如:
将程序跑起来后,控制台输出了,对应语言的值。
注意:我们无需修改系统语言进行测试,只需要编辑Scheme修改语言即可,如下例子,将英文修改成中文简体。
这个时候运行程序,程序就会加载对应的语言包了。
注意:storyboard和xib文件对应的strings文件,不会因为storyboard和xib的改动而自动添加,需要在项目目录下运行:
1 | ibtool /xx/xproject/xxx.storyboard --generate-strings-file xx.lproj/xxx.string |
本地化和国际化的基本操作已经完成,当然还有很多内容,本文并没有讲到,例如多人开发时如何保证字符串本地,图片本地化等操作。后面有时间在更新。。。