各國語言縮寫http://www.loc.gov/standards/iso639-2/php/code_list.php
國家和地區簡寫http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
在Android工程的res目錄下,通過定義特殊的文件夾名稱就可以實現多語言支持。比如我們的程序兼容簡體中文、日文、英文、法文和德文,在values文件夾中建立默認strings.xml,再建立values-zh-rCN(zh表示中文rCN表示簡體,類似還有美式英語,奧式英語)、values-ja、values、values-fr和values-de文件夾。 (可以用開發工具:見http://www.cnblogs.com/wuyunan/archive/2009/09/16/1567960.html)
Android應用程序的國際化與本地化機制是比較完善的,操作起來也比較方便。我們可以把要用到的所有字符串放在res/values目錄下的strings.xml文件中,在程序中以R.string.xx的形式來引用它們。把其他語言的字符串放在形如res/values-zh-rCN、res/values-zh-rTW目錄下的strings.xml文件中,應用程序會根據手機語言的設置情況自動選擇合適的語言。不只是字符串,程序中所用到的圖片、音頻、佈局等資源文件都可以通過這種形式來實現國際化與本地化。以下示例程序實現了字符串和圖片文件的國際化與本地化。在代碼中切換語言:
Resources resources = getResources();//獲得res資源對象
Configuration config = resources.getConfiguration();//獲得設置對象
DisplayMetrics dm = resources .getDisplayMetrics();//獲得屏幕參數:主要是分辨率,像素等。
config.locale = Locale.SIMPLIFIED_CHINESE; //簡體中文
resources.updateConfiguration(config, dm);
Configuration config = resources.getConfiguration();//獲得設置對象
DisplayMetrics dm = resources .getDisplayMetrics();//獲得屏幕參數:主要是分辨率,像素等。
config.locale = Locale.SIMPLIFIED_CHINESE; //簡體中文
resources.updateConfiguration(config, dm);
補:
添加列表裡的,Region和Language,Region值填寫兩位地區代碼(美國為US,中國為ZH,台灣(繁體)為TW),Language填寫兩位語言代碼(英語en,中文cn)。有一點要注意,簡繁體中文並不是由Language識別的,不管是簡體還是繁體,Language都填cn,如果要顯示繁體,Region填為TW就可以了
英文values-en 中文簡體drawable-zh-rCN 中文繁體layout-zh-rTW
Android應用程序的國際化與本地化機制是比較完善的,操作起來也比較方便。我們可以把要用到的所有字符串放在res/values目錄下的strings.xml文件中,在程序中以R.string.xx的形式來引用它們。把其他語言的字符串放在形如res/values-zh-rCN、res/values-zh-rTW目錄下的strings.xml文件中,應用程序會根據手機語言的設置情況自動選擇合適的語言。不只是字符串,程序中所用到的圖片、音頻、佈局等資源文件都可以通過這種形式來實現國際化與本地化。以下示例程序實現了字符串和圖片文件的國際化與本地化。
程序目錄如下:

添加列表裡的,Region和Language,Region值填寫兩位地區代碼(美國為US,中國為ZH,台灣(繁體)為TW),Language填寫兩位語言代碼(英語en,中文cn)。有一點要注意,簡繁體中文並不是由Language識別的,不管是簡體還是繁體,Language都填cn,如果要顯示繁體,Region填為TW就可以了
英文values-en 中文簡體drawable-zh-rCN 中文繁體layout-zh-rTW
Android應用程序的國際化與本地化機制是比較完善的,操作起來也比較方便。我們可以把要用到的所有字符串放在res/values目錄下的strings.xml文件中,在程序中以R.string.xx的形式來引用它們。把其他語言的字符串放在形如res/values-zh-rCN、res/values-zh-rTW目錄下的strings.xml文件中,應用程序會根據手機語言的設置情況自動選擇合適的語言。不只是字符串,程序中所用到的圖片、音頻、佈局等資源文件都可以通過這種形式來實現國際化與本地化。以下示例程序實現了字符串和圖片文件的國際化與本地化。
程序目錄如下:

res/layout/main.xml文件:
- xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- > <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:text="@string/text_a"
- /> <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:text="@string/text_b"
- /> <Button android:id="@+id/flag_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- /> </LinearLayout>
src/playboy/test/HelloL10N.java文件:
- package playboy.test;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- public class HelloL10N extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // assign flag.png to the button, loading correct flag image for current locale
- Button b;
- (b = (Button)findViewById(R.id.flag_button)).setBackgroundDrawable(this.getResources().getDrawable(R.drawable.flag));
- // build dialog box to display when user clicks the flag
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setMessage(R.string.dialog_text)
- .setCancelable(false)
- .setTitle(R.string.dialog_title)
- .setPositiveButton(R.string.dialog_ok, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- dialog.dismiss();
- }
- });
- final AlertDialog alert = builder.create();
- // set click listener on the flag to show the dialog box
- b.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- alert.show();
- }
- });
- }
- }
res/values/strings.xml文件:
- xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="app_name">Hello, L10N</string>
- <string name="text_a">Jay Chou</string>
- <string name="text_b">Andy Lau</string>
- <string name="dialog_ok">Done</string>
- <string name="dialog_title">Already Localisation</string>
- <string name="dialog_text">Support multi-languages.</string>
- </resources>
res/values-zh-rCN/strings.xml文件:
- xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="app_name">Hello, L10N</string>
- <string name="text_a">周杰伦</string>
- <string name="text_b">刘德华</string>
- <string name="dialog_ok">确定</string>
- <string name="dialog_title">已经国际化</string>
- <string name="dialog_text">支持多语言</string>
- </resources>
res/values-zh-rTW/strings.xml文件:
|
drawable實現圖片資源的國際化,values實現字符串的國際化。 zh-rCN表示的是中文-中國內地,zh-rTW表示的是中文-台灣。 hdpi、mdpi、ldpi表示的是不同分辨率的圖片,本例中的drawable實現了語言、地區與分辨率的各種組合。
再來看一看程序的執行情況,分別將模擬器的語言設置成English(United kingdom)、中文(簡體)、中
文(繁體)以及朝鮮語,程序運行結果如圖所示。
再來看一看程序的執行情況,分別將模擬器的語言設置成English(United kingdom)、中文(簡體)、中
文(繁體)以及朝鮮語,程序運行結果如圖所示。


當把模擬器設置為英語和朝鮮語時,由於程序沒有實現英語和朝鮮語的本地化,所以會使用默認的語言,程序使用的是res/values/strings.xml文件中的字符串和res/ drawable-mdpi目錄中的圖片(根據模擬器分辨率的具體設置情況,也可能調用res/drawable-zh-rCN-hdpi或者res/drawable-zh-rCN-ldpi目錄下的圖片)。
No comments:
Post a Comment