網頁

2015年4月19日 星期日

Android學習心得-多國語言資料夾的設定(Android Study Review- Setting Multi-language Folders)

在每個專案的res目錄下建立不同名稱的values文件以顯示不同的語言,這裡寫的是沒有經過變更硬體或軟體架構的android系統的設定方式,如果使用的行動裝置有更改過android原始設訂的則不一定會依據這種方式變更
預設values資料夾最好用英文,因此在沒有加入其他多國語言資料夾預設值的語言為英文的話理論上應該是全部的手機都會支援英文,假設沒有加入韓文資料夾或者相關的字串翻譯的話(資料夾中的strings.xml必須做對應變更,而且字串代值必須用r.strings.text來加入Activity或在layoutxml加入text=@string/text指令,text就是字串的替代對應值),用韓文版的android手機使用這個app就僅會顯示英文
舉常用的Toast指令為例
Toast.makeText(this"這是一個Toast"Toast.LENGTH_LONG).show();
在不同手機下就只會秀 這是一個Toast的訊息或者亂碼或是空白字元,就要看手機有無裝繁體字形
而依據底下的指令才可能依據不同語言秀出不同的文字而且每個語言的strings.xmltext的值也要跟著變化
Toast.makeText(thisR.string.textToast.LENGTH_SHORT).show();
Free counters!





多國語言資料夾命名方式:
values-xx(僅用這樣就可以表示語言但以該語言最主要使用國為主,且開發介面會秀出該國國旗)
xx(以語言代碼(ISO 639-1)為主,android相關語言編碼代碼請參照 google play的網站 https://support.google.com/googleplay/android-developer/table/4419860?hl=zh-Hanthttps://zh.wikipedia.org/wiki/ISO_639-1))
範例:英文: values/values-en
values-xx-rYY(因為有些國家的主要語言不只一種,例如美國就有英文法文與西班牙文三種主要語言流通,而加拿大也有英文跟法文,印度除了英文外,印地文也很普遍,所以除了語言碼外要另加兩碼國家碼來代表相同國家的不同使用語言,如果所用的碼正確且android有支援便會在strings.xml的檔案視窗左下角出現該國的國旗,如上面的兩個圖示),英文雖然號稱最通行的國際語言,但目前美式英文跟英式英文在腔調與部分字彙上有不少差異(台灣一般學校教的是美式英文),所以在多國語言設定上也會不同,所以如果你的app有同時要推廣到英國跟美國,相關的翻譯細節最好還是必須注意其他很多種相同語言在不同國家也是有類似的情況發生。雖然在Google Play Developer下有所謂的es-419拉丁美洲西班牙文,試了很多方式還是試不出來,不知有無先進能提供使用方法?
xx(相關語言編碼代碼(ISO 639-1) https://zh.wikipedia.org/wiki/ISO_639-1)
YY(相關國家編碼代碼(ISO 3166-1) https://zh.wikipedia.org/wiki/ISO_3166-1)
範例:繁體中文(台灣)values-zh-rTW

比較常用的語言values資料夾的名稱設定
英文(美國)values-en-rUS
英文(英國)values-en-rGB
英文(澳大利亞)values-en-rAU
英文(加拿大)values-en-rCA
英文(愛爾蘭)values-en-rIE
英文(印度)values-en-rIN
英文(紐西蘭)values-en-rNZ
英文(新加坡)values-en-rSG
英文(南非)values-en-rZA
法文(法國)values-fr/values-fr-rFR
法文(比利時)values-fr-rBE
法文(加拿大)values-fr-rCA
法文(瑞士)values-fr-rCH
日文:values-ja/values-ja-rJP
繁體中文(台灣)values-zh-rTW
繁體中文(香港)values-zh-rHK
簡體中文(中國)values-zh-rCN
西班牙文(西班牙)values-es/values-es-rES
西班牙文(美國)values-es-rUS
西班牙文(拉丁美洲)values-es-419(好像不能這樣子使用)
阿拉伯文:values-ar
阿拉伯文(埃及)values-ar-rEG
阿拉伯文(沙烏地阿拉伯)values-ar-rSA
阿拉伯文(以色列)values-ar-rIL
俄文:values-ru/values-ru-rRU
葡萄牙文(巴西)values-pt/values-pt-rBR
葡萄牙文(葡萄牙)values-pt-rPT
德文(德國)values-de/values-de-rDE
德文(奧地利)values-de-rAT
德文(瑞士)values-de-rCH
德文(列支敦士登)values-de-rLI
義大利文(瑞士)values-it-rCH
義大利文(義大利)values-it/values-it-rIT
保加利亞文: values-bg-rBG
加泰羅尼亞文(西班牙)values-ca-rES
捷克文:values-cs-rCZ
丹麥文:values-da-rDK
希臘文:values-el-rGR
芬蘭文(芬蘭)values-fi-rFI
希伯來文(以色列)values-iw-rIL
印地文:values-hi-rIN
克羅里亞文:values-hr-rHR
匈牙利文:values-hu-rHU
印度尼西亞文:values-in-rID
韓文:values-ko-rKR
立陶宛文:valueslt-rLT
拉脫維亞文:values-lv-rLV
挪威博克馬爾文:values-nb-rNO
荷蘭文(比利時)values-nl-rBE
荷蘭文(荷蘭)values-nl-rNL
波蘭文:values-pl-rPL
羅馬尼亞文:values-ro-rRO
斯洛伐克文:values-sk-rSK
斯洛文尼亞文:values-sl-rSI
塞爾維亞文:values-sr-rRS
瑞典文:values-sv-rSE
泰文:values-th-rTH
塔加洛語:values-tl-rPH
土耳其文:values–tr-rTR
烏克蘭文:values-uk-rUA
越南文:values-vi-rVN


沒有留言: