[翻译]Android教程-保存数据-支持多种语言

创建 Locale 路径和 String 文件


为了添加对更多语言的支持,就要在res/里面另外再创建包含一个其路径名称的末尾带上连字符后面,再跟上ISO语言编码的 values 路径 . 例如,values-es/ 是包含带有语言编码“es”的本地方言简单资源的路径 . Android 会根据设备在运行时的方言设置来加载相近的资源 . 更多信息,键 提供可选资源.

一旦你已经决定了你所要支持的语言,那就要创建资源子路径和字符串资源文件了. 例如 :

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

将每一个方言的字符串值都添加到相近的文件中.

在运行时,Android系统会基于用户设备的当前方言设置来使用相近的字符串资源集合 .

例如,下面是一些用于不同语言的字符串资源文件 .

英语(default locale), /values/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>

西班牙语Spanish, /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>

法语French, /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>

注意:你可以在任何资源类型上使用到这个方言限定符 (或者任何配置限定符), 比如你想要提供位图的方言化版本. 更多的信息,见 本地化.

使用 String 资源

你可以使用由<String>元素名称属性定义的资源名称来引用你的资源代码和XML文件中的字符串资源。

在你的源代码中,你可以使用 R.string.<字符串_名称>来引用字符串资源. 有各种方法可以用这种方式接受一个字符串资源 .

例如 :

// 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" />

来源:

http://developer.android.com/training/basics/supporting-devices/languages.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏最高权限比特流

Servlet详细教程

32940
来自专栏三流程序员的挣扎

Python 小白的第一次实践——将统计数据转成 Execl

公司项目的广告展示率太低,需要查找原因,之前做了统计埋点,运维给出过滤后的数据,一个 txt 文件 500M 以上,文件打开非常乱。

9410
来自专栏机器学习从入门到成神

关于hibernate中对象的三种状态分析

一、首先Hibernate中对象的状态有三种:瞬态、游离态和持久态,三种状态转化的方法都是通过session来调用,瞬态到持久态的方法有save()、saveO...

25910
来自专栏菩提树下的杨过

dubbox REST服务使用fastjson替换jackson

上一节讲解了resteasy如何使用fastjson来替换默认的jackson,虽然dubbox内部采用的就是resteasy,但是大多数情况下,dubbox服...

236100
来自专栏Android-薛之涛

Android-Proguard(混淆)

  混淆这玩意,也是经常用,但也是没总结,趁端午有假有时间,就在这里整理一下,也祝大家端午快乐。

31640
来自专栏Play & Scala 技术分享

Java基础 - 常用路径操作总结

30470
来自专栏静默虚空的博客

OSGi 基本原理

定义 OSGi(Open Service Gateway Initiative)技术是面向Java的动态模型系统。 这个框架实现了一个优雅、完整和动态地组价模...

45390
来自专栏C/C++基础

Makefile教程

Makefile定义了软件开发过程中,项目工程编译链、链接的方法和规则。 由IDE自动生成或者开发者手动书写。 Unix(MAC OS、Solaris)和Lin...

45020
来自专栏软件测试经验与教训

Python学习笔记(15)- os\\os.path 操作文件

36360
来自专栏IT笔记

Illegal attempt to associate a collection with two open sessions

错误信息: org.springframework.orm.hibernate3.HibernateSystemException: Illegal attem...

42850

扫码关注云+社区

领取腾讯云代金券