java獲取系統語言(區分簡體中文和繁體中文)

以前作android應用時遇到過一個問題,就是根據語言的不一樣而顯示不一樣的內容java

網上不少代碼都是錯誤的,起碼沒法區分簡體和繁體,這裏給出一種方法android

不涉及android任何知識,因此就歸類到java這邊了web


[java] 函數

  1. Locale locale = Locale.getDefault();  this

  2. System.out.println(locale.getLanguage());  編碼

  3. 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地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

相關文章
相關標籤/搜索