国际化

来源:互联网 发布:淘宝帐号登录记录 编辑:程序博客网 时间:2024/04/29 13:33

转自:iOS国际化和genstrings所有子目录本地化字符串


正文:

首先,我们使用字符串,必须用NSLocalizedString(key,comment),这样我们在不同的Localizable.strings对key指定不同的值,系统会根据当前系统语言,去不同的lproj找不同的字符串。用个图显示吧:(逆向完成后,拖到项目,结果一定是下面的样子,如果是下拉三角出现“中、英”,有可能是坑,显示key但是不显示你要的内容)


我们应用只支持中文,英文,所以只建了zh-Hans.lproj和en.lproj,然后在Localizable.strings指定了不同的值。举例如下:

   
 这样程序就能根据系统语言,去选择“登录”还是“Log In”。

 

但是如果每次加了一个本地化字符串,就得手动去Localizable.strings添加对应的key,那就太麻烦了,幸好苹果提供了快捷生成本地化key的命令。下面以en.lproj的生成为例:

首先,我们进入程序工程所在的目录,用命令建立en.lproj 

  mkdir en.lproj

然后我们遍历所有的子目录文件,去生成Localizable.strings,命令如下:

  find ./ -name *.m -print0 | xargs -0 genstrings -o en.lproj

基本都说genstrings -o en.lproj *.m就可以生成Localizable.strings,但是这个命令只能生成当前目录的,并没有遍历子目录,所以基本没用

这样系统就会把子目录用到NSLocalizedString函数的key值都写到文件里。

需要注意的是,NSLocalizedString(key,comment),用这个函数时,key不能是宏定义或者一些动态字符串,否则用上面的命令会报错。

下面是打印出当前设备支持的所有语言:(其中zh-Hans是简体中文,zh-Hant是繁体中文;en英文,ja日文


(

    en,

    "zh-Hans",

    fr,

    de,

    ja,

    nl,

    it,

    es,

    pt,

    "pt-PT",

    da,

    fi,

    nb,

    sv,

    ko,

    "zh-Hant",

    ru,

    pl,

    tr,

    uk,

    ar,

    hr,

    cs,

    el,

    he,

    ro,

    sk,

    th,

    id,

    ms,

    "en-GB",

    ca,

    hu,

    vi

)


0 0
原创粉丝点击