美文网首页iOS基础知识
iOS语言本地化(NSLocalized​String)

iOS语言本地化(NSLocalized​String)

作者: 托尔里 | 来源:发表于2021-10-18 20:18 被阅读0次

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

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

    工程配置(添加多语言)

    选中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语言本地化(NSLocalized​String)

        本文链接:https://www.haomeiwen.com/subject/knpfuctx.html