美文网首页
iOS 国际化(多语系)

iOS 国际化(多语系)

作者: 蜗牛也有梦想 | 来源:发表于2017-02-24 14:55 被阅读34次

    如果项目中需要根据不同的地区显示不同的语言,那么就需要app能够支持多种语系,也叫国际化处理。
    首先在项目的Supporting Files 中 右键 new file

    创建Localizable文件.png

    当地的语言是默认支持的,额外需要支持的语言可以自己配置,但是一般都是需要支持英语

    选择需要支持的语言.png

    如果除了英语之外还需要支持其他的语言,那么就需要到info当中做配置了

    info中选择其他的语言.png 选择一种语言.png

    之后就是选择需要支持多语系的文件了

    选择需要支持多语系的文件.png

    成功之后项目的Supporting File 多一个这样的文件

    三种语言文件.png

    重复上面的步骤创建一个中文的文件
    "test" = "测试" ;
    "test" = "test" ;
    左边是key 右边是对应语言的文字.

    使用NSLocalizedString来设置多语系.png

    当项目非常庞大的时候一般会遇到下面两个问题
    一个是key值可能会重复
    一个是多个控件可能具有相同的名称

    屏幕快照 2017-02-25 17.00.19.png

    解决这个问题目前看到有两套做法:
    第一种是 key的命名方式可以采用 控制器名+控件名+意义 这样的方式
    这样的话看到即使是在 sring文件中阅读代码,也能够知道这个key在哪里使用到。
    如果多个控件公用一个的话,那么可以在key的命名后面+reuse来表示这个key是被重用的。(如果以后其中某个控件修改了名字,不要忘记新建一对key value),这套做法的问题在于,如果多个控制器都使用了相同名称的控件,如果要修改,那么就要逐个的分别修改这些,无法一次性修改。而且如果多个界面元素的名称很多重复,每一个都要写一个key,会造成很多次的重复。

    第二种是key值使用中文命名(或者自己的母语),这样在赋值使用NSLocalizedString时就能够知晓空间的名称。如果有复用的情况存在也很方便直观的知道,而不是由于上面那套复杂做法造成复用性差的问题。但是也带来一个问题,如果希望只修改其中一部分控件的名字,就需要新建key值了。上面那一套就只需要更新对应界面的value值就可以了。

    但是综合改动量来看,第二套做法更好。

    参考资料
    http://blog.csdn.net/lwjok2007/article/details/46547085

    相关文章

      网友评论

          本文标题:iOS 国际化(多语系)

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