[Titanium]在android上實現多國語言對應

LINEで送る
[`evernote` not found]

titanium_android_i18n之前曾經碰過在ANDROID的時候,由於命名問題造成的錯誤。但當真正要實踐在android中的多國語言對應時才發現,並不是單單只有改檔名的問題,不只存放多國語言的XML的資料夾的位置不同,還需要透過修改AndroidManifest.xml的配合才能夠達到多國語言的目的。
在這部份,其實在appcelerator的wiki中已經有蠻清楚的說明。只是這次使用的是alloy,所以稍微記錄一下目前的目錄結構(如左)。順便也記錄一下這次在製作AndroidManifest.xml時碰到的一點點小問題。


在一般的情況下,Titanium是會幫我們製作好androidManifest.xml這個檔案,存放在/build/android/之中。但有時我彭會碰到一些特殊需求,就必須自定這個檔案(存放在/platform/android/之中)。這樣Titanium在重新建立build時,就會自動覆寫系統自動產生的AndroidManifest.xml。當然覆寫AndroidManifest.xml有一定的風險,所以最安全的方法就是先build一次,然後到/build/android/把順利執行成功的AndroidManifest.xml拷貝到/platform/android/,然後才進行客製化的編輯。
這次我的目的只有希望依照android用戶所設定的系統語言,顯示出不同語言的app名稱,所以修改如wiki所寫:

<!-- TI_MANIFEST -->
<application android:icon="@drawable/appicon"
  android:label="@string/app_name" android:name="TestlocApplication"
  android:debuggable="false">
 
  <!-- TI_APPLICATION -->
  <activity android:name=".TestlocActivity"
    android:label="@string/app_name" android:theme="@style/Theme.Titanium"
    android:configChanges="keyboardHidden|orientation">
    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
        category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>

注意,這並不是AndroidManifest.xml全文,更改的部份其實只有「@string/app_name」這個地方。其他都是依照完本的AndroidManifest.xml內容。如此一來,如果碰到日文的android系統,app就會到我們所設定的/platform/android/res/values-ja/strings.xml中讀取正確的app的日文名稱囉。