2011年6月25日 星期六

Android程式設計 - 多語系介面

Android支援多語系介面,應用程式只要提供不同語系介面所需的文字字串資源,Android就會自動依裝置所使用的語系,調用對應的資源檔,相當方便。
Android手機介面語系設定
Android手機可參考以下說明設定操作介面之語系:
1. 執行Setting (設定)
2. 選擇Language & keyboard (語言與鍵盤) 項目
3. 點選Select locale (選取語言)
4. 點選所要使用的語系
 res/values-XX子目錄
應用程式預設會使用儲存在res/values目錄下的文字字串資源,當我們需要其它語系介面,只要在res下建立語系所對應的子目錄,並建立該語系的文字字串資源即可。例如:values-zh-rTW子目錄為繁體中文資源
假設應用程式預設之strings.xml內容如為:
<resources>
<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">demo of multi-language UI</string>
<string name="title">Change to Chinese UI</string>
</resources>
我們可在res目錄下建立values-zh-rTW子目錄,並加入以下的strings.xml檔
<resources>
<string name="hello">歡迎使用Android平台</string>
<string name="app_name">多語言介面功能展示</string>
<string name="title">使用英文介面</string>
</resources>
一旦Android裝置設定使用繁體中文語系,應用程式執行時就會自動取用繁體中文之資源檔內容。

動態變換介面語系
程式中可透過Configuration物件來變更Android裝置設定,其中locale屬性值表示所要使用的語系,作法如下:
    Resources res = getResources();
    Configuration conf = res.getConfiguration();
    if (btnUI.getText().equals("使用英文介面"))
        conf.locale = Locale.ENGLISH;
    else
        conf.locale = Locale.TAIWAN;
    res.updateConfiguration(conf, null);
    setContentView(R.layout.main);
有一點要注意,使用setContentView()重設版面後,介面元件的資料會回復為初始值,而且先前為介面元件所註冊的事件監聽器資訊也會被清除,所以必須為介面元件重新註冊事件監聽器,不然你會發現所有介面元件的監聽器似乎都失靈了。