Training--支持不同的语言

 支持不同的语言 


一个比较好的习惯就是把UI字符串从代码里提取出来,放在一个单独的文件里。在安卓上,很容易做到这一点,在每个工程目录下,都有一个单独的资源文件夹专门用来存放这些资源的。

 

如果你使用了安卓SDK工具创建了一个工程(前面介绍过如何使用Eclipse创建工程),在工程的根目录下你就会发现一个 res/ 文件夹。这个res文件夹以及里面的各层目录存放了不同的类型资源。有一个默认的文件叫 res/values/strings.xml,里面存放了你需要用到的字符串资源。

 

创建语言包和字符串文件

 

为了支持更多的语言,在res/ 目录下创建文件夹 “values-<国家码>”。例如, values-zh/ ,这个文件夹包含有国家码 “zh”,这样,当在手机的设置里,将语言更改为中文时,安卓系统就会为你的app加载这个目录下的资源,例如字符串等。

 

当你决定想支持哪些语言时,就可以在res/目录下创建相应的资源子文件夹和字符串资源文件。例如:

 

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


在上面的各个目录下的strings.xml,你可以为不同的语言添加字符串资源。

 

在运行时,安卓系统会根据手机的语言设置来调用相应的字符串资源。

 

例如,下面就是一些为不同语言准备的字符串资源。

 

英语(默认语言), /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-zh/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">我的应用</string>
    <string name="hello_world">你好 世界! </string>
</resources>

使用字符串资源

 

你可以在代码中或者在XML文件中引用这些字符串资源。

 

在代码中,你可以使用R.string.<string_name>语法形式引用某个字符串。有很多方法都这接受这样的参数形式。

 

例如:

 

// 获得某个字符串对象
String hello = getResources().getString(R.string.hello_world);

// 或者将某个字符串ID作为参数传给方法
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);

 

在XML文件中引用的话,可以使用这样的形式@string/<string_name>赋值给某个属性,当然前提是这个属性接受字符串值。

 

例如:

 

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值