以前作android應用時遇到過一個問題,就是根據語言的不一樣而顯示不一樣的內容java
網上不少代碼都是錯誤的,起碼沒法區分簡體和繁體,這裏給出一種方法android
不涉及android任何知識,因此就歸類到java這邊了web
[java] 函數
Locale locale = Locale.getDefault(); this
System.out.println(locale.getLanguage()); 編碼
System.out.println(locale.getCountry()); spa
這裏咱們關注兩個方法.net
public String getLanguage()翻譯
Since: API Level 1code
Returns the language code for this Locale or the empty string if no language was set.
public String getCountry()
Since: API Level 1
Returns the country code for this locale, or "" if this locale doesn't correspond to a specific country.
返回的都是代碼(code),須要解釋下語言代碼和國家代碼
語言代碼(或語言編碼)是一組用來表明語言的代碼。語言代碼是由字母或數字組成的短字串,用於分類圖書館典藏、電腦程式上的本地化和翻譯等用途。(轉自中文維基百科)
國家代碼(或國家編碼)是一組用來表明國家和境外領土的地理代碼。國家代碼是由字母或數字組成的短字串,方便用於數據處理和通信。世界上有許多不一樣的國家代碼標準,其中最廣爲人知是爲國際標準化組織的ISO 3166-1。國家代碼也能夠指國際長途電話國家號碼,即國際電信聯盟的國際電話區號(E.164)。(轉自中文維基百科)(這裏指的是前者)
那麼語言代碼和國家代碼的對應關係是什麼呢,咱們能夠參考下面兩個文獻
ISO 639:Codes for the representation of names of languages
ISO 3166:Codes for the representation of names of countries and their subdivisions
若是系統使用的是漢語,那麼getLanguage()返回的字符串爲zh,而後根據getCountry()返回結果能夠判斷出簡體仍是繁體了。若是是TW,那麼就是繁體了,返回CN則是簡體,若是返回了HK,這個本身看着辦吧。。。
在android中,切換系統語言後,這兩個函數的返回值就都會作出相應的改變
在android中,簡體中文和繁體中文字符串資源要分別放到res/values-zh-rCN和res/values-zh-rTW下,這裏爲何會有個r,我也不清楚
ps:在ISO 3166-1 alpha-2中,TW的說明爲:Taiwan, Province of China,仍是有些使人欣慰的
轉貼請保留如下連接
本人blog地址