• 【Android Developers Training】 11. 支持不同语言


    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。

    原文链接:http://developer.android.com/training/basics/supporting-devices/languages.html


    将UI字符串从你应用的代码中提取出来,并将它们放置在一个外部的文件中是一个值得长期保持的习惯。Android使得这件事情变的简单,在每个Andorid项目工程中,都有一个放置资源的目录。

    如果你通过Android SDK Tools创建了你的项目工程(Creating an Android Project,对应博客链接:http://www.cnblogs.com/jdneo/p/3438347.html),这个工具会在项目的顶层创建一个“/res”目录。在这个目录下的所有子目录对应了不同类型的资源。这里面也有一些默认的文件比如:res/values/strings.xml,这个文件存放了你的字符资源。

     

    一). 创建地区目录和字符串文件

    为了支持更多语言,在“res/”下创建额外的“values”文件,文件名的最后还包含一个横线“-”,和国家的国际标准码。例如:“values-es/”这一目录下存放的是一些适配地区码为“es”的简单资源。Android会在运行时根据设备的地区设置来恰当地加载资源。

    一旦你决定好了要支持哪些语言,你就可以创建资源的子目录和字符串资源文件,例如:

    MyProject/
        res/
           values/
               strings.xml
           values-es/
               strings.xml
           values-fr/
               strings.xml

    然后将字符串的值根据不同地区添加到对应的文件中。

    在运行时,Android系统会根据当前设备的地区设置信息来使用对应的字符串资源集。

    例如:下面是不同语言所对应的不同的字符串资源文件:

    英语(默认地区),/values/strings.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="title">My Application</string>
        <string name="hello_world">Hello World!</string>
    </resources>

    西班牙语,/values-es/strings.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="title">Mi Aplicación</string>
        <string name="hello_world">Hola Mundo!</string>
    </resources>

    法语,/values-fr/strings.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="title">Mon Application</string>
        <string name="hello_world">Bonjour le monde !</string>
    </resources>

    Note:

    你可以在任何类型的资源上使用地区适配符(或其他任何设置符(configuration qualifer)),比如你可以以此将你的位图资源根据地区不同而使用不同的版本。更多信息可以阅读:Localization

    二). 使用字符串资源

    你可以在你的源码或其他XML文件中,使用<string>标签中的“name”属性字段定义的资源名,对字符串资源进行引用。

    在你的源码中,你可以通过如下语法:“R.string.<string_name>”来引用字符串资源。有很多方法会接受以这种方式接受一个字符串资源作为参数。

    例如:

    // Get a string resource from your app's Resources
    String hello = getResources().getString(R.string.hello_world);
    
    // Or supply a string resource to a method that requires a string
    TextView textView = new TextView(this);
    textView.setText(R.string.hello_world);

    在其他的XML文件中,当XML属性字段接受一个字符串值时,你可以使用如下语法:“@string/<string_name>”来引用字符串资源。

    例如:

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
  • 相关阅读:
    Extjs常用的控件
    JasperReport导出
    spring配置连接池
    extjs中xtype类型

    凭什么!
    用心去做,多动脑思考
    闲着无事弄一下荒废已久的博客。。。

    视频下载工具 3.0
  • 原文地址:https://www.cnblogs.com/jdneo/p/3446617.html
Copyright © 2020-2023  润新知