華爲手機安卓9以上獲取系統多語言出錯的解決方案
事情的起因是做海外項目的時候需要進行多語言處理。我們通過Unity自帶的Application.systemLanguage接口獲取手機的語言環境一直沒啥問題。但是在華爲手機的安卓9系統的時候,我們在切換到繁體中文之後,通過Unity的接口發現使用顯示是ChineseSimplified簡體中文。
一開始我們想的是Unity引擎可能沒有兼容到,所以開始編寫java代碼,通過安卓底層的接口去獲取系統語言。
public String GetDeviceLanguage()
{
Locale locale = Locale.getDefault();
//>=24 is Android 7.0 or high
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = getResources().getConfiguration().getLocales().get(0);
}
String language = locale.getLanguage() + "-" + locale.getCountry();
return language;
}
我們使用上面的接口發現在手機系統是繁體中文的情況下,獲取到的仍然是zh-cn.也就是安卓底層也是沒法獲取正確。但是手機顯示的語言確實是繁體中文。怎麼辦呢?
既然顯示的是繁體中文,那麼我們就根據顯示的語言來處理就好了。java底層還有這樣一個接口
locale.getDisplayCountry();
獲取顯示的國家。我們發現顯示的是 “中國”。好了我們通過編寫java代碼獲取到DisplayCountry,然後和 “中國”進行比對,相等即認定爲繁體中文。
如果本文對你有所幫助,歡迎讚賞~~~
歡迎關注微信公衆號:Unity遊戲開發筆記
QQ羣: