Android已經設計好了國際化(I18N)和本地化(L10N)的架構,隻要編寫程式時符合這個架構要求,實作程式的本地化并不困難。
下面以HelloAndroid (http://code.google.com/android/intro/hello-android.html中Eclipse SDK自動生成)為例,讨論如何實作HelloAndroid的中文化。
1)檔案src/com/android/hello/R.java中列出了hello 字元串的id:
public final class R {
...
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
2)檔案res/values/strings.xml中列出了hello字元串的内容:
<string name="hello">Hello World, HelloAndroid</string>
3)建立一個新的目錄和新的strings.xml檔案,用來存儲hello字元串的中文翻譯:
res/values-zh/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">你好,Android</string>
<string name="app_name">你好,Android</string>
</resources>
4) 修改檔案 src/com/android/hello/HelloAndroid.java,
将
tv.setText("Hello, Android");改成 tv.setText(R.string.hello);
5)編譯helloAndroid項目,設定虛拟機locale為zh-CN後重新啟動emulator。在從eclipse中運作helloAndroid項目,這時,可見中文顯示。
$./adb shell
#echo zh-CN > /data/locale;stop;sleep 5; start <sdk 1.0>
#setprop persist.sys.language zh;setprop persist.sys.country CN;stop;sleep 5;start <sdk 1.5>