導航:首頁 > 操作系統 > android本地國際化

android本地國際化

發布時間:2025-06-01 06:54:48

android開發案例驅動教程目錄

Android開發案例驅動教程目錄

Ⅱ Android 國際化 設置Locale.ENGLISH不生效以及createConfigurationContext()問題

Q1 故事情節: 設置了簡體中文,繁體中文和英信戚鋒文,結果拿了7.0榮耀青春版完美顯示,然而7.0下的所有安卓手機都設置英文無效,簡體中文和繁體中文依然可以,納悶......

Q1 解決方式:雖說看起來設置了英文Locale.ENGLISH, 但實際上有些手機或系統需要特殊指明那個英文的(英國/美國),所以不要直接使用Locale.ENGLISH,將滑晌Locale.ENGLISH改成相對應的Locale.US(美國英文) 或 Locale.UK(英國英文)就可以了,如下圖注釋部分。

Q2 故事仔滲情節:還以為Q1問題解決就可以了,在設置createConfigurationContext(config)情況下,>=6.0系統的手機都切換語言失敗(5.0的手機剛好沒有,所以待定),具體原因不詳

Q2 解決方式:老老實實,用回getResources().updateConfiguration(config, null)就可以了

Ⅲ Android國際化多語言切換

關於App國際化,之前有講到國際化資源、字元換、布局相關,想要了解的猛戳 用力抱一下APP國際化 。借著本次重構多語言想跟大家聊一下多語言切換,多語言切換對於一款國際化App來講是重中之重,並非難事,但是若要做好也是一件不容易的事情。

當我們做了系統的配置更改,比如說切換了系統導航或者說更改了深色模式,那麼我們一般的處理是也是要對Application作出處理。

如果項目中有用到ApplicationContext去getString(@StringRes int id)實現載入的提示語,那麼如果只是單純的重啟界面則無法讓當前的提示語跟隨當前切換的語言,所以我們要麼重啟整個應用,要麼對ApplicationContext中的Local也作出相應的更新方可,這里有一點問題,雖然Android N之後updateConfiguration是過時方法,官方給出使用createConfigurationContext代替,但是更新ApplicationContext的Local發現無效使用老版本updateConfiguration正常。

如果你發現你的應用廣播通知欄適配無效,那就是context中的Local在切換語言是並未及時更新Local,這里調試一下便知,如果是Applicaiton注冊的廣播,那麼多半情況下是沒有更新ApplicationContext的Local所導致的。

多語言適配基本步驟大概就是如此了,下面看一下適配的細節問題。

[圖片上傳失敗...(image-b42d06-1640685147639)]
還有一點Android N之後,手機系統的語言配置選項已經不是單選了,改為一個列表了,具體可以參考手機設置中的語言和輸入法,所以 setLocal(@Nullable Locale loc) 方法建議不要再使用了,我相信很多人還在用,正確的用法應該是 setLocals(@Nullable LocaleList locales) ,需要傳遞一個集合。

當你的應用使用的是androidx.appcompat:appcompat:1.2.0及以上時,BaseActivity中需要實現下面方法。

這套方案目前不在推薦,直接去替換attatchBaseContext()中的context則可,經過測試是完全正常的。

以下則是多語言操作的工具類,現在提供出來,需要的朋友可以自行進行改造。

閱讀全文

與android本地國際化相關的資料

熱點內容
python運行系統指令 瀏覽:242
androidstring轉char 瀏覽:624
linux命令編寫 瀏覽:104
wordpress伺服器怎麼選 瀏覽:684
摩托車app下載哪個好 瀏覽:740
linuxvps掛載 瀏覽:124
c語言怎麼做文件夾 瀏覽:844
程序員愛低頭嗎 瀏覽:628
mongophpupdate 瀏覽:698
單片機最小系統電路摘要 瀏覽:64
湯不熱伺服器地址是什麼 瀏覽:730
什麼是linux命令 瀏覽:102
androidlog怎麼看 瀏覽:574
反壟斷法修訂數據演算法約束 瀏覽:587
linux格式化u盤命令 瀏覽:75
windows防反編譯 瀏覽:448
安卓40編譯器 瀏覽:217
邁克的命令 瀏覽:170
pdf循環播放 瀏覽:177
如何把安卓手機里的微信聊天記錄導入電腦 瀏覽:812