注:本文翻译自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. 支持不同语言的更多相关文章

  1. 【Android Developers Training】 10. 序言:支持不同设备

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

  2. 【Android Developers Training】 13. 支持不同平台版本

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

  3. 【Android Developers Training】 12. 支持不同屏幕

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

  4. 【Android Developers Training】 8. 定义Action Bar风格

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

  5. 【Android Developers Training】 6. 配置Action Bar

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

  6. 【Android Developers Training】 89. 最大化的使用谷歌云消息(Google Cloud Messaging)

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

  7. 【Android Developers Training】 59. 管理图片存储

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

  8. 【Android Developers Training】 58. 缓存位图

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

  9. 【Android Developers Training】 53. 打印HTML文档

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

随机推荐

  1. 转:CentOS---网络配置详解

    一.配置文件详解在RHEL或者CentOS等Redhat系的Linux系统里,跟网络有关的主要设置文件如下: /etc/host.conf         配置域名服务客户端的控制文件/etc/hos ...

  2. 用 Vue 全家桶二次开发 V2EX 社区

    一.开发背景 为了全面的熟悉Vue+Vue-router+Vuex+axios技术栈,结合V2EX的开放API开发了这个简洁版的V2EX. 在线预览 (为了实现跨域,直接npm run dev部署的, ...

  3. Gulp文档入门的文档

    Gulp自动化执行文件的操作 首先gulp基于node开发的,先按照node.js,使用npm sudo npm install -g gulp (在全局的范围安装 gulp) gulp --help ...

  4. photo

    我们在android开发过程中 经常有做到发图片或修改上传头像的功能 即要调用系统相册 如何调用系统相册并处理返回的数据呢?因为随着android手机系统的提高 不同系统的手机对调用相册并处理相册不同 ...

  5. 初识数据库连接池开源框架Druid

    Druid是阿里巴巴的一个数据库连接池开源框架,准确来说它不仅仅包括数据库连接池这么简单,它还提供强大的监控和扩展功能.本文仅仅是在不采用Spring框架对Druid的窥探,采用目前最新版本druid ...

  6. Mysql 忘记root密码后修改root密码

    1.修改my.cnf: 在mysqld进程配置文件中添加skip-grant-tables,添加完成后记住保存. 2.重新启动MYSQL数据库: service mysqld restart 2.修改 ...

  7. 【JAVAWEB学习笔记】11_XML&反射

    解析XML总结(SAX.Pull.Dom三种方式) 图一 XML的解析方式 图二 XML的Schema的约束 反射的简单介绍: 反射 1.什么是反射技术? 动态获取指定类以及类中的内容(成员),并运行 ...

  8. GTD:让大脑用来思考,而不是用来记事!

    前段时间听刘润大师分享了一套GTD时间管理方法理论,感觉非常受用!现拿来跟大家分享下,这套方法是刘润老师践行20多年总结提炼的精华,经亲自实践确实行之有效. 俗话说:工欲善其事,必先利其器!人生也是如 ...

  9. 如何用PHP遍历文件数目 或删除目录下的全部文件?

    先说一下基础知识: 文件位置如下图所示: 1.判断是文件还是目录 var_dump(filetype("./aa/bb/cc.txt")); 输出: string(4) " ...

  10. java反射 顺序输出类中的方法

    java反射可以获取一个类中的所有方法,但是这些方法的输出顺序,并非代码的编写顺序. 我们可以通过自定义一个注解来实现顺序输出类中的方法. 首先,先写一个类,定义增删改查4个方法 public cla ...