zoukankan      html  css  js  c++  java
  • iphone  应用程序的国际化 即多语言

    App本地化的需要不用讲大家也都明白,本文将介绍一种简单的方法来实现字符串的本地化。

    在不考虑本地化的情况下,我们如果在代码中给一个Button定义title,一般会这样写:

    btn.titleLable.text = @"Example Button";
    

     

    也许我们已经写了很长的代码才考虑到本地化的问题,大可不必头疼,这时候,我们要做的是把代码从头扫一遍,然后把每个会显示给用户看的字符串做如下修改:
    (对于内部使用的字符串就用不着本地化了)

    btn.titleLable.text = NSLocalizedString(@"btn_title", nil);
    

    NSLocalizedString是一个定义在NSBundle.h中的宏,其用途是寻找当前系统语言对应的Localizable.strings文件中的某个key的值。
    第一个参数是key的名字,第二个参数是对这个“键值对”的注释,在用genstrings工具生成Localizable.strings文件时会自动加上去。

     

    到目前为止,我们还没有生成Localizable.strings文件。这是一个逆向的过程,也就是先写好调用过程,再生成strings资源文件。

    当我们把所有的.m文件都修发好了,就该genstrings工具出场了。
      1. 启动终端,进入工程所在目录。
      2. 新建两个目录,推荐放在资源目录下。
        目录名会作用到Localizable.strings文件对应的语言,不能写错了。这里zh-Hans指简体中文,注意不能用zh.lproj表示。

    mkdir zh-Hans.lproj
    mkdir en.lproj

      3. 生成Localizable.strings文件

    genstrings -o zh-Hans.lproj *.m
    genstrings -o en.lproj *.m

      -o <文件夹>,指定生成的Localizable.strings文件放置的目录。
      *.m,扫描所有的.m文件。这里支持的文件还包括.h, .java等。

      4. 右键点击工程的Resources目录,选择“New Group”,添加两个目录zh-Hans.lproj和en.lproj。
      5. 在新建的group中添加刚刚生成的Localizable.strings文件。
      6. 最后在Localizable.strings文件中,修改每个key所对应的内容,就大功告成了。

     

    说了一大堆,其实操作起来还是很简单的,总的来讲就是两条:
      1. 在代码里用NSLocalizedString获取要本地化的字符串
      2. 用genstrings扫描代码文件,生成Localizable.strings,然后加到工程中。 

    转载:http://www.cnblogs.com/every2003/archive/2012/03/20/2407253.html

    http://zjqzy03080312.blog.163.com/blog/static/185742807201331021544145/

    使用genstrings遍历子目录 

    1. cd到制定的工程目录下面
    2.调用 find . -name \*.m | xargs genstrings -o .
    在该目录下面将生成Localizable.strings文件   .m是你多语言的源文件

  • 相关阅读:
    Ubuntu16.04+GTX2070+Driver418.43+CUDA10.1+cuDNN7.6
    N皇后问题
    Linux Bash之通配符
    Linux Bash之正则表达式
    Linux Bash文本操作之grep篇
    Linux Bash文本操作之sed篇其二
    Integer对象两种创建方式的比较
    Class文件版本号
    group by、group_concat()、if()
    字节码命令与Java语言在语义描述能力上的差异
  • 原文地址:https://www.cnblogs.com/cnsec/p/11515866.html
Copyright © 2011-2022 走看看