2019-12-25

【Kotlin】取得 國家/地區 的相關資訊



Android 7.0(API24) 開始支援多語言,即一個 Android 裝置可以設定多個語言,而且,以簡體中文為例,就有 中國,香港,澳門,新加坡四種。
 
// 台灣,繁體中文
var myLocale = Locale.getDefault()
var sCountry = "country =" + myLocale.country        // 顯示 TW
var sLanguage = "language = " + myLocale.language    // 顯示 zh

// 因為 myLocale.language 只顯示 zh, 
// 所以還要搭配 myLocale.country 去判斷 是 台灣繁體中文/大陸简体中文/香港繁體中文...

var sDisplayLanguage = "Display language = " + myLocale.displayLanguage    // 顯示 中文
var sDisplayName = "displayName = " + myLocale.displayName    // 顯示 中文(台灣)
var sTostring = "ToString = " + myLocale.toString()    // zh_TW_#Hant, 這個函式不錯, 需要的資訊一次提供了

var myCurrency = Currency.getInstance(myLocale)
var mySymbol  = "Symbol = " + myCurrency.symbol    // 顯示 $

var formatter = NumberFormat.getCurrencyInstance(myLocale) as DecimalFormat
var sNumber = "Currency number =" + formatter.format(123456.789)    // 顯示 $123,456.79


// 香港,繁體中文
var myLocale = Locale.getDefault()
var sCountry = "country =" + myLocale.country        // 顯示 HK
var sLanguage = "language = " + myLocale.language    // 顯示 zh
var sDisplayLanguage = "Display language = " + myLocale.displayLanguage    // 顯示 中文
var sDisplayName = "displayName = " + myLocale.displayName    // 顯示 中文(繁體中文,香港)
var sTostring = "ToString = " + myLocale.toString()    // zh_HK_#Hant


// 大陸,簡體中文
var myLocale = Locale.getDefault()
var sCountry = "country =" + myLocale.country        // 顯示 CN
var sLanguage = "language = " + myLocale.language    // 顯示 zh
var sDisplayLanguage = "Display language = " + myLocale.displayLanguage    // 顯示 中文
var sDisplayName = "displayName = " + myLocale.displayName    // 顯示 中文(简体中文,中国)
var sTostring = "ToString = " + myLocale.toString()    // zh_CN_#Hans


// 香港,簡體中文
var myLocale = Locale.getDefault()
var sCountry = "country =" + myLocale.country        // 顯示 HK
var sLanguage = "language = " + myLocale.language    // 顯示 zh
var sDisplayLanguage = "Display language = " + myLocale.displayLanguage    // 顯示 中文
var sDisplayName = "displayName = " + myLocale.displayName    // 顯示 中文(简体中文,香港)
var sTostring = "ToString = " + myLocale.toString()    // zh_HK_#Hans


// 澳門,簡體中文
var myLocale = Locale.getDefault()
var sCountry = "country =" + myLocale.country        // 顯示 MO
var sLanguage = "language = " + myLocale.language    // 顯示 zh
var sDisplayLanguage = "Display language = " + myLocale.displayLanguage    // 顯示 中文
var sDisplayName = "displayName = " + myLocale.displayName    // 顯示 中文(简体中文,澳门)
var sTostring = "ToString = " + myLocale.toString()    // zh_MO_#Hans


// 新加坡,簡體中文
var myLocale = Locale.getDefault()
var sCountry = "country =" + myLocale.country        // 顯示 SG
var sLanguage = "language = " + myLocale.language    // 顯示 zh
var sDisplayLanguage = "Display language = " + myLocale.displayLanguage    // 顯示 中文
var sDisplayName = "displayName = " + myLocale.displayName    // 顯示 中文(简体中文,新加坡)
var sTostring = "ToString = " + myLocale.toString()    // zh_SG_#Hans

 


繁體中文(台灣)的資源檔目錄為:values-zh-rTW
簡體中文(大陸)的資源檔目錄為:values-zh-rCN
簡體中文(新加坡)的資源檔目錄為:values-zh-rSG

當地區為香港時,
若使用者選擇的語言為繁體中文,則 APP 會讀取 values-zh-rTW
若使用者選擇的語言為簡體中文,且為大陸屬地(如香港、澳門),則 APP 會讀取 values-zh-rCN
若使用者選擇的語言為簡體中文,且為新加坡,則 APP 會讀取 values-zh-rSG