Android 国际化与资源自适应

国际化很重要!  就算再有困难,再有挫折,该实施时,也要坚定实现国际化!(7.23 动车劫 温家宝会见中外记者都坚持有翻译随同)

说起Android SDK国际化,通常只需要将界面文字翻译成不同语言,然后将相应的资源文件放到各种语言特定国际化资源目录

资源的自适应性  主要指单独为每一种环境设置资源,例如对480*320 和 854 * 480 两种分辨率的手机设置两种XML布局文件.

 1.  对于界面的字符串国际化,实际就是为应用程序提供不同语言的字符串,  对于开发人员要做的确是,为保存各种语言的字符串资源建立国际化目录,然后将相应的资源文件放到这些目录中, 国际化目录的规则如下:

   资源目录  +  国际化配置选项

其中资源目录是指  res  目录中的子目录,例如 values,layout等,国际化配置选择项包含很多部分,中间用 " - " 分隔。例如要实现不同语言和地区的国际化,这些配置选项包括语言代号和地区代号。 表示中文和中国的配置选项是 zh-rCN; 表示英文和美国的配置选项是en-rUS.  表示zh 和 en 表示中文和英文;CN  和 US 表示中国和美国;  前面的r 是必须的,

为了区分地区部分,不能单独指定地区,但可以单独指定语言。

步骤:

   1.  在res 目录中建立两个文件夹:  values-zh-rCN  和 values-en-rUS。 并在这两个目录中各建立一个strings.xml,  内容如下:

      values-zh-rCN  目录中的 strings.xml 文件

      <resources>

            <string   name="ok">确定</string>

            <string name="cancel">取消</string>

           <string name="ignore">忽略</string>

    </resources>

    values-en-rUS  目录中的strings.xml 文件

    <resources>

              <string   name="ok">OK</string>

              <string name="cancel">Cancel</string>

             <string name="ignore">Ignore</string>

    </resources>

包括values目录下strings.xml文件,虽然有3 个strings.xml文件,但不会冲突。

2.  其他的资源目录也可以采用同样的方式处理语言和地区的国际化,例如在res 目录中建立两个目录: drawable-zh-rCN  和 drawable-en-rUS,并在这两个目录中分别放一个flag.jpg,  然后可以正常引用这个图像资源, 代码:

 <ImageView   android:id="@+id/iv"   android:layout_width="100dp"  android:layout_height="80dp"  android:src="@drawable/flag"  />

如果当前的语言环境未找到相应的资源,如德文,Android 系统会根据具体的资源做出相应的处理,对于字符串资源,如果该资源不存在,会显示该资源在R类中生成的ID值(以十进制显示)

 可以从如下地址获得完整的语言和地区的配置选项:

获得语言配置选项 http://www.loc.gov/standards/iso639-2/php/code_list.php

获得地区配置选项 http://www.iso-org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html

除了可以使用资源目录的方式外,第二种方式是:    使用  Locale  对象获得当前的语言环境, 然后根据语言环境决定读取哪个资源文件中的资源,使用这种方式可以将资源文件存放在  assets  目录 。要注意,这里的CN 和 US前面未加前缀 r.代码也在ch13_i18n中,设置title会随着当前语言环境的变化而变化

示意图

Android 国际化与资源自适应 Android 国际化与资源自适应 Android 国际化与资源自适应

具体代码参见 ch13_i18n 工程

相关推荐