小 忆 博 客
有梦想,有精彩

macOS App国际化和本地化

目录

  1. App为什么要国际化和本地化
  2. 如何配置App国际化
    1. 在项目中添加需要国际化/本地化的语言
    2. App名称本地化
    3. 字符串本地化

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

本地化和国际化的基本操作已经完成,当然还有很多内容,本文并没有讲到,例如多人开发时如何保证字符串本地,图片本地化等操作。后面有时间在更新。。。