java获取系统语言(区分简体中文和繁体中文)
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
之前做android應(yīng)用時遇到過一個問題,就是根據(jù)語言的不同而顯示不同的內(nèi)容
網(wǎng)上很多代碼都是錯誤的,起碼無法區(qū)分簡體和繁體,這里給出一種方法
不涉及android任何知識,所以就歸類到j(luò)ava這邊了
[java]?
Locale?locale?=?Locale.getDefault();??
System.out.println(locale.getLanguage());??
System.out.println(locale.getCountry());??
這里我們關(guān)注兩個方法
public String getLanguage()
Since: API Level 1
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),需要解釋下語言代碼和國家代碼
語言代碼(或語言編碼)是一組用來代表語言的代碼。語言代碼是由字母或數(shù)字組成的短字串,用于分類圖書館典藏、電腦程式上的本地化和翻譯等用途。(轉(zhuǎn)自中文維基百科)
國家代碼(或國家編碼)是一組用來代表國家和境外領(lǐng)土的地理代碼。國家代碼是由字母或數(shù)字組成的短字串,方便用于數(shù)據(jù)處理和通訊。世界上有許多不同的國家代碼標準,其中最廣為人知是為國際標準化組織的ISO 3166-1。國家代碼也可以指國際長途電話國家號碼,即國際電信聯(lián)盟的國際電話區(qū)號(E.164)。(轉(zhuǎn)自中文維基百科)(這里指的是前者)
那么語言代碼和國家代碼的對應(yīng)關(guān)系是什么呢,我們可以參考下面兩個文獻
ISO 639:Codes for the representation of names of languages
ISO 3166:Codes for the representation of names of countries and their subdivisions
如果系統(tǒng)使用的是漢語,那么getLanguage()返回的字符串為zh,然后根據(jù)getCountry()返回結(jié)果可以判斷出簡體還是繁體了。如果是TW,那么就是繁體了,返回CN則是簡體,如果返回了HK,這個自己看著辦吧。。。
在android中,切換系統(tǒng)語言后,這兩個函數(shù)的返回值就都會做出相應(yīng)的改變
在android中,簡體中文和繁體中文字符串資源要分別放到res/values-zh-rCN和res/values-zh-rTW下,這里為什么會有個r,我也不清楚
ps:在ISO 3166-1 alpha-2中,TW的說明為:Taiwan, Province of China,還是有些令人欣慰的
轉(zhuǎn)貼請保留以下鏈接
本人blog地址
http://su1216.iteye.com/
http://blog.csdn.net/su1216/
轉(zhuǎn)載于:https://my.oschina.net/airship/blog/377810
總結(jié)
以上是生活随笔為你收集整理的java获取系统语言(区分简体中文和繁体中文)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VMware Fusion DHCP方式
- 下一篇: XPath 简介