【Android Developers Training】 11. 支持不同

系统 1783 0

注:本文翻译自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"
      
      
        />
      
    

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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论