iOS语言本地化(NSLocalizedString)

应用中那些字符串需要本地化

一般而言,所有你想以某种形式展现在用户眼前的字符串都需要本地化,包括标签和按钮上的文本,或者在运行时通过格式化字符串和数据动态生成的字符串。

工程配置(添加多语言)

选中PROJECT->INFO->Localizations,然后点击"+"号,添加你需要的语言类别


1

创建好工程之后默认的语言为英语。这里我们需要添加简体中文


2

添加完毕,我们可以看到有两种语言Chinese和English


3


本地化应用名称(InfoPlist.strings)

通过InfoPlist.strings文件,应用可以在不同的手机语言环境中,显示不同预先设置好的名字。例如,微信在简体中文环境下显示的名字为“微信”,而在英语环境下显示为“weChat”。

创建文件。command + N -> iOS -> Resource -> Strings File


4

文件名字必须为InfoPlist

5

默认为English,点击Localize

勾选Chinese(Simplified)


创建完成,此时我们可以看到,InfoPlist.strings文件以包含英语以及简体中文两种语言的文件


接下来,我们分别在不同的语言文件中设置响应的App名字



我们可以看到在不同的手机语言环境中,App显示的名字是不同的。



NSLocalizedString

NSLocalized​String这个宏是字符串本地化的核心。NSLocalizedString提供本地化字符串的 “一次编译,随处运行” 的方式,根据用户设置的字符串表把所有本地化字符串替换成对应的翻译。

它有两个参数key:进行本地化的唯一字符串标识, comment:用于提供用来准确翻译的足够的上下文的字符串。在实践中,key往往只是用来翻译的基准字符串,而comment通常是 nil

在运行时,NSLocalizedString首先会确定当前的手机语言环境,并在应用程序包中找到相应的Localizable.strings文件,查找和参数匹配的键值(在下面的例子中 key==home),然后读出真正要显示的字符串。

在实践中,key 往往只是用来翻译的基准字符串,而 comment 通常是 nil

在使用NSLocalized​String之前我们需要先创建好相应的Localizable.strings文件,创建的方法跟创建InfoPlist.strings相同,这里就不具体说明了。

再次声明,命名为“Localizable”


在英语环境中,打印的是“hello”,而在中文环境中,打印的是“你好”



调试技巧

切换语言无需在模拟器中设置,只需要在Xcode中进行如下设置: Edit->Scheme->Run->Options ->Application Languages -> 选择需要调试的语言。



结尾

这次介绍了NSLocalizedString的基本用法,以及它的几个类似宏的应用场景。这几个宏对于规模稍大的项目,以及模块化思路都有很好的帮助。还给大家分享了关于注释和键值命名的一些建议。无论你开发的 APP 是否真的需要多语言,使用NSLocalizedString而不是直接把字符串写到代码里面都是一个相对好一些的选择,因为能够轻松地查看所有用户将看到字符串是很有用的。

最后,喜欢的话请点个赞吧!

你可能感兴趣的:(iOS语言本地化(NSLocalizedString))