语言本地化,又叫做语言国际化。是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言。苹果设备遍布全球,往往一个应用要供给全世界各个范围内的人群使用。这时,做好应用的国际化就显得尤为重要!
本篇博文旨在让所有 IOS 开发者都能快速上手国际化方案,以图文形式展示,简单易懂,自己亲自成功实践过。下面详细解说:
配置需要国际化的语言
在进行配置国际化语言之前,首先当然也是最重要的是,请做好目标语言的翻译工作。确定好翻译后,开启国际化之旅!
在 Xcode 中配置需要国际化的语言选项,无论是国际化 APP 名称,还是应用名称,还是 storyBoard 或者 xib,都需要做这一步的准备工作(一个项目中仅需配置一次)。如下图所示:
弹出如下图所示对话框,直接点击 finish :
应用名称国际化
首先说说应用名称的国际化方案,先创建一个 Strings File 文件,如下图所示:
然后给文件名字命名为InfoPlist,且必须是这个名字:
选中 InfoPlist.strings,在 Xcode 的 File inspection(Xcode右侧文件检查器)中点击 Localize,目的是选择我们需要本地化的语言,接下来,勾选需要国际化的语言:
接下来,我们分别用不同的语言给InfoPlist.strings下的文件设置对应的名字,这里只截取一张图片,其他语言类似:
到此,应用的名称就已经国际化完毕,可以更改设置中的系统语言,检测国际化成果,这里不再截图。
代码字符串本地化
所谓字符串本地化,就是指App内的字符串在不同的语言环境下显示不同的内容。比如,app 在运行过程中有一个弹框,需要根据系统语言进行国际化。下面就开始进行字符串本地化。
其实字符串本地化与APP名称国际化差不多,只是创建的文件名不一样,同样以截图的形式一一展示,同理,文件名必须命名为 Localizable:
选中 Localizable.strings 文件,在 Xcode 的 File inspection 中点击 Localize,目的是选择我们需要本地化的语言(和本地化App名称同理):
然后我们只需要在Localizable.strings下对应的文件中,分别以Key-Value的形式,为代码中每一个需要本地化的字符串赋值:
最后,有一个步骤十分关键,需要在代码中设置相关的宏替换:
#define NSLocalizedString(key, comment) [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:nil]
至此,代码字符串本地化完成。
StoryBoard/Xib 国际化
StoryBoard/Xib 国际化方法较多,此处讲一种最容易上手的方法,当然,这不是最好的方法,会有一些麻烦,基本原理类似,展开 Main.storyboard,给每种语言的storyboard 一一国际化:
在未接触过国际化之前,总觉得很神奇,但真正操作过一遍之后才领会到其中的奥秘,其实很简单,要多做,敢于尝试,很多技术点都是熟能生巧!分享之,望共同学习,共同进步!