lanworld wrote:那是app沒針對7.0優化,跟app開發商說才對吧?
剛發現另一個問題.....(恕刪)
billgoldberg wrote:
那是開放商的問題,...(恕刪)
以下文章截取自"小熊工作室"
=====================================================================
問題背景:
由於 Android 系統最初的繁體中文語言只有「中文(台灣)」,但其後則續漸出現含有「中文(香港)」語言的機種,以致在資源使用 zh-rTW 這個慣常使用的語言時會在「中文(香港)」下顯示英文介面。於是,當時慣常的做法是將 zh-rTW 改成直接用 zh,令系統在任何中文語言(若程式要支援簡體中文時仍可使用 zh-rCN) 都會使用後備的 zh 資源來顥示,這就能讓「中文(台灣)」與「中文(香港)」語言使用同一套資源,不用分開維護。
問題成因:
Google 在 Android 7.0 首次加入語言順序及相依性的功能,有了這個功能,使用者可以選擇多於一種顯示語言,Android 系統會依照使用者的偏好順序選擇程式用來顯示的語言而不再局限於「國家->語言->預設」的順序。在這種修改下,「中文(香港)」會基於「中文(台灣)」,也就是說當程式沒有手動多語言支援時,只需要有 zh-rTW 的資源時,「中文(香港)」同樣適用。但是,從測試所得,當資源含有 zh 時 (即使同時含 zh-rCN 也一樣) 則無論是哪一種中文語系 (無論是台灣、香港還是中國) 都不會去使用,也就造成在 Android 7.0 下系統把程式當成沒有中文資源而永遠只用英文來顯示,即使系統語言設定裡只加入一項中文語言也一樣。我相信這是一個 bug 而不是內定行為,但礙於這個問題的局限性,我不覺得 Google 會修復這個問題。
解決方法:
要解決這個問題,需要兩個步驟:
1. 將 zh 的資源改回 zh-rTW,以讓 Android 7.0 能再識別中文資源,但這樣會令 Android 6.x 或以下無法識別香港語言
2. 以程式碼檢查 Locale.getDefault() 所得的 Locale 物件,當 language 是 zh 時,若 country 不是 TW 或 CN 時,以 Locale.setDefault() 將程式預設語系設成 Locale.TRADITIONAL_CHINESE,並透過 context.getResources().updateConfiguration() 修改 Configuration 的 locale 為 Locale.TRADITIONAL_CHINESE (Configuration.setLocale() 在 Android 7.0 已被標示過時,但還能使用)。至於 Android 7.0 建議改用的 LocaleList 對於這個問題則似乎沒有任何效果。這樣就能讓 Android 6.x 或以下系統改用 zh-rTW 的資源。
============================================================================
原文連結
內文搜尋

X