赞
踩
安卓手机APP开发__支持不同的语言和文化
目录
APP包括了能被指定为一种特定的文件的资源。例如,一个APP能够包括
特定的文件的字符串,这个字符串能被翻译为本地的语言。
保持特定文化的资源与你的APP的其它部分独立开来是很好的实践。
安卓基于系统的本地化设置来解决特定的语言和特定的文化的资源问题。
你能提供对不同的本地化的支持,使用的方法是在你的安卓项目的资源目录
下使用不同的本地化设置。
你能根据使用你的APP的人的不同的文化,来指定资源的后缀。你能提供
任何类型的资源,来匹配你的用户的语言和文化。
当你使用安卓SDK工具创建一个项目时,工具在项目的顶层目录下,生成了一个
res/的目录。这个res/目录是各种资源类型的子目录。这也有一些默认的文件,
例如res/values/strings.xml文件,这个文件放你的字符串的值。
使用特定的本地的资源,来支持不同的语言已经超过它的范围了。
一些用户选择了一个从右向左阅读的语言,例如阿拉伯语。其他的
用户设置了从左向右读的语言,例如英语,可能生成的内容中有右
向左的内容。为了支持这两类用户,你的APP需要做如下的事:
对于右向左的本地化设置,使用一个右向左的用户界面布局。
检查和声明文本数据的方向,这些文本是显示在结构化的消息里的。
通常,你能调用一个方法,来确定文本的方向。
为了添加更多的本地化设置的支持,在res/目录下,创建一个额外
的目录,名称必须是如下的格式:
<resource type>-b+<language code>[+<country code>]
例如,values-b+es/包括了字符串资源,它的语言编号是es。相似的是
mipmap-b+es+ES/包括了本地化的图标,它的语言编号是es,国家编号是ES。
安卓根据在运行时的设备的本地化设置加载合适的资源。更多的信息见备选的资源。
当你决定支持哪一个本地化后,创建资源的子目录和文件,例如:
MyProject/
res/
values/
strings.xml
values-b+es/
strings.xml
mipmap/
country_flag.png
mipmap-b+es+ES/
country_flag.png
用本地化的资源生成资源文件。如下的内容是本地化的字符串和图像的资源文件的例子:
英语的字符串(默认的本地化)在/values/strings.xml:
<resources>
<string name="hello_world">Hello World!</string>
</resources>
西班牙语的字符串(本地化是es)在 /values-b+es/strings.xml:
<resources>
<string name="hello_world">?Hola Mundo!</string>
</resources>
美国标识的图标(默认的本地化)在/mipmap/country_flag.png:
西班牙标识的图标(本地化为es_ES)在/mipmap-b+es+ES/country_flag.png:
注意的是:你能使用配置修饰词,例如在任何的资源类型上,使用本地化的修饰词。
例如,你可能要提供你的位图的本地化版本。更多的信息,请见本地化你的app。
在你的源代友和其它的XML文件中通过使用每个资源名称的属性R.<资源类型>.<资源名称>
来引用资源。在这个方式上有一些方法来接收一个资源,如下的例子所示:
Kotlin
- // Get a string resource
- val hello = resources.getString(R.string.hello_world)
-
- // Or supply a string resource to a method that requires a string
- TextView(this).apply {
- setText(R.string.hello_world)
- }
在XML文件中,你能引用一个资源使用的语法是@<资源类型>/<资源名称>,当XML的属性
接收了一个可兼容的值,如下的例子所示:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/country_flag" />
注意的是,为了确保用户的语言设置是正确的优先的,要合适的使用resConfigs
来指定你的app支持的语言。更多的信息,见指定你的app支持的语言。
在一个app中最常用的任务之一是结构化的文本。本地化的消息通过插入文本和数值的数据
到合适的位置上,来结构化。不幸的是,当处理一个右向左的用户界面和右向左的数据时,
简单地结构化能显示不正确,甚至是不可读的文本输出。
语言例如,阿拉伯语,波斯语和乌尔都语都是从右向左写的。然而,一些元素,例如
数字和内嵌的从左向右的文本是从左向右写的,否则是右向左的文本。语言使用左向右
的文本,包括英语也是双向的,因为它也能内嵌右向左的文本。
app中经常生成这种包括了反向的文本的实例。这种混合的不能包括一个清晰的方向,
所以生成的文本能引起不好的用户体验。
尽管系统默认处理双向的文本通常是按预期渲染,当你的app把它放入一个本地化的消息中时
文本可能没有合适的被渲染。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。