Supporting Different Languages
支持不同语言
This class teaches you to
这节课教给你
- Create Locale Directories and String Files
创建一个本地目录和String文件夹
- Use the String Resources
使用String资源
You should also read
你还需要阅读
- Localization Checklist
本地清单列表
- Localization with Resources
本地化资源
It’s always a good practice to extract UI strings from your app code and keep them in an external file. Android makes this easy with a resources directory in each Android project.
把UI字符串从你的应用程序中提取出来放到一个额外的文件中一直都是一个很好的惯例。Android通过在Android项目中使用一个资源目录让其变得简单。
If you created your project using the Android SDK Tools (read Creating an Android Project), the tools create a res/ directory in the top level of the project. Within this res/ directory are subdirectories for various resource types. There are also a few default files such as res/values/strings.xml, which holds your string values.
如果你使用Android SDK 工具创建你的项目(请阅读Creating an Android Project),SDK工具会在你项目的顶层创建一个 res/ 目录。在这个 res/ 目录下是一些各种各样的资源类型的子目录。这里也有一些默认的文件,比如 res/values/strings.xml,这里面保存的是你的字符串值。
Create Locale Directories and String Files
创建一个本地目录和String文件
To add support for more languages, create additional values directories inside res/ that include a hyphen and the ISO language code at the end of the directory name. For example, values-es/ is the directory containing simple resourcess for the Locales with the language code “es”. Android loads the appropriate resources according to the locale settings of the device at run time. For more information, see Providing Alternative Resources.
为了让你的app支持更多的语言,需要在 res/ 下创建一个额外的 values 目录,在这个目录的名字后面需要跟上一个连字符以及ISO( 国际标准化组织)语言代码。例如,values-es/ 是仅仅包含对于本地语言代码是“es”的资源目录。Android在运行时,会根据设备对于地区的设置来加载适当的资源。想获取跟多信息,请看Providing Alternative Resources。
Once you’ve decided on the languages you will support, create the resource subdirectories and string resource files. For example:
一旦你决定你将要支持某种语言,请创建一个资源子目录和字符串资源文件。例如:
MyProject/
res/
values/
strings.xml
values-es/
strings.xml
values-fr/
strings.xml
Add the string values for each locale into the appropriate file.
把对于每种不同地区的string值添加到适当的文件中。
At runtime, the Android system uses the appropriate set of string resources based on the locale currently set for the user’s device.
在运行的时候,Android系统会使用适当的string资源,这取决于用户的设备当前的地区设置。
For example, the following are some different string resource files for different languages.
例如,下面是对于不同语言的几种不同string资源文件:
English (default locale), /values/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>
Spanish, /values-es/strings.xml:
西班牙语,/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:
法语, /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: You can use the locale qualifier (or any configuration qualifer) on any resource type, such as if you want to provide localized versions of your bitmap drawable. For more information, see Localization.
注意:你可以在任何资源类型上使用地区限定符(或者任何配置的限定符),比如如果你想要对不同地方提供不同版本的位图图片。关于更多信息,请看Localization。
Use the String Resources
使用String资源
You can reference your string resources in your source code and other XML files using the resource name defined by the element’s name attribute.
你可以通过已经在string资源中已经定义好的资源名字在你的源代码或其他的XML文件中引用你的string资源,这些资源名字通过元素的名字属性来定义。
In your source code, you can refer to a string resource with the syntax R.string.. There are a variety of methods that accept a string resource this way.
在你的源代码中,你可以用R.string.这个语法来引用一个资源文件。有许多方法都可以通过这种方式接受一个string资源。
For example:
例如:
// 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);
In other XML files, you can refer to a string resource with the syntax @string/ whenever the XML attribute accepts a string value.
在其他的XML文件中,每当XML属性接收一个string值时,你就可以用 @string/这个语法来关联到一个string资源。
For example:
例如:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
Next: Supporting Different Screens
下一节:支持不同的屏幕