2019-12-25

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



Android 7.0(API24) 開始支援多語言,即一個 Android 裝置可以設定多個語言,而且,以簡體中文為例,就有 中國,香港,澳門,新加坡四種。
  1.  
  2. // 台灣,繁體中文
  3. var myLocale = Locale.getDefault()
  4. var sCountry = "country =" + myLocale.country // 顯示 TW
  5. var sLanguage = "language = " + myLocale.language // 顯示 zh
  6.  
  7. // 因為 myLocale.language 只顯示 zh,
  8. // 所以還要搭配 myLocale.country 去判斷 是 台灣繁體中文/大陸简体中文/香港繁體中文...
  9.  
  10. var sDisplayLanguage = "Display language = " + myLocale.displayLanguage // 顯示 中文
  11. var sDisplayName = "displayName = " + myLocale.displayName // 顯示 中文(台灣)
  12. var sTostring = "ToString = " + myLocale.toString() // zh_TW_#Hant, 這個函式不錯, 需要的資訊一次提供了
  13.  
  14. var myCurrency = Currency.getInstance(myLocale)
  15. var mySymbol = "Symbol = " + myCurrency.symbol // 顯示 $
  16.  
  17. var formatter = NumberFormat.getCurrencyInstance(myLocale) as DecimalFormat
  18. var sNumber = "Currency number =" + formatter.format(123456.789) // 顯示 $123,456.79
  19.  
  20.  
  21. // 香港,繁體中文
  22. var myLocale = Locale.getDefault()
  23. var sCountry = "country =" + myLocale.country // 顯示 HK
  24. var sLanguage = "language = " + myLocale.language // 顯示 zh
  25. var sDisplayLanguage = "Display language = " + myLocale.displayLanguage // 顯示 中文
  26. var sDisplayName = "displayName = " + myLocale.displayName // 顯示 中文(繁體中文,香港)
  27. var sTostring = "ToString = " + myLocale.toString() // zh_HK_#Hant
  28.  
  29.  
  30. // 大陸,簡體中文
  31. var myLocale = Locale.getDefault()
  32. var sCountry = "country =" + myLocale.country // 顯示 CN
  33. var sLanguage = "language = " + myLocale.language // 顯示 zh
  34. var sDisplayLanguage = "Display language = " + myLocale.displayLanguage // 顯示 中文
  35. var sDisplayName = "displayName = " + myLocale.displayName // 顯示 中文(简体中文,中国)
  36. var sTostring = "ToString = " + myLocale.toString() // zh_CN_#Hans
  37.  
  38.  
  39. // 香港,簡體中文
  40. var myLocale = Locale.getDefault()
  41. var sCountry = "country =" + myLocale.country // 顯示 HK
  42. var sLanguage = "language = " + myLocale.language // 顯示 zh
  43. var sDisplayLanguage = "Display language = " + myLocale.displayLanguage // 顯示 中文
  44. var sDisplayName = "displayName = " + myLocale.displayName // 顯示 中文(简体中文,香港)
  45. var sTostring = "ToString = " + myLocale.toString() // zh_HK_#Hans
  46.  
  47.  
  48. // 澳門,簡體中文
  49. var myLocale = Locale.getDefault()
  50. var sCountry = "country =" + myLocale.country // 顯示 MO
  51. var sLanguage = "language = " + myLocale.language // 顯示 zh
  52. var sDisplayLanguage = "Display language = " + myLocale.displayLanguage // 顯示 中文
  53. var sDisplayName = "displayName = " + myLocale.displayName // 顯示 中文(简体中文,澳门)
  54. var sTostring = "ToString = " + myLocale.toString() // zh_MO_#Hans
  55.  
  56.  
  57. // 新加坡,簡體中文
  58. var myLocale = Locale.getDefault()
  59. var sCountry = "country =" + myLocale.country // 顯示 SG
  60. var sLanguage = "language = " + myLocale.language // 顯示 zh
  61. var sDisplayLanguage = "Display language = " + myLocale.displayLanguage // 顯示 中文
  62. var sDisplayName = "displayName = " + myLocale.displayName // 顯示 中文(简体中文,新加坡)
  63. var sTostring = "ToString = " + myLocale.toString() // zh_SG_#Hans
  64.  
  65.  


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

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