2016-01-14 20 views
3

我有一個應用程序需要提供以另一個設備的語言本地化的字符串。只要我的應用程序知道其他設備的語言,它就會創建一個新的資源類。類似於這個questionAndroid以編程方式檢查應用程序是否針對某種語言進行了本地化

剛剛創建得到字符串時,如果不支持的語言可以依傍的資源對象(假設其他設備設置爲en_US):

  1. 值-ZH-RUS/strings.xml中
  2. 值-en/strings.xml中
  3. 值/ strings.xml中

取而代之的第三個後備我要回落到我自己的設備的語言(假設我的設備設置爲es_ES那麼這將是) :

  1. 值烯RUS/strings.xml中
  2. 值烯/ strings.xml中
  3. 值-ES-RES/strings.xml中
  4. 值-ES/strings.xml中
  5. values/strings.xml

如果我可以用編程方式檢查我的應用程序是否支持語言/區域,那麼我可以實現這一點非常簡單。發現這個AssetManager.getLocales(),但認爲它沒有幫助。

有沒有辦法實現所需的回退或檢查應用程序是否在特定語言/區域本地化的方法?

+0

「或者檢查應用程序是否在特定語言/區域中進行本地化的方法?」 - 由於您是編寫應用程序的人,並且您知道您已將其本地化爲哪種語言,只需將該信息編碼到您的應用程序中。 – CommonsWare

+0

這是正確的,但我想避免。此代碼應該使用不同的受支持語言集在不同的應用上運行。如果這可以通過編程來完成,那麼將減少維護和失敗風險。 – Kujta

回答

0

請參閱here。測試它並獲得了正確的設備區域設置爲雙符號字符串。代碼是:

String Language = Locale.getDefault().getLanguage() //returns eg. "de" for german 
+0

瞭解設備區域設置無助於獲取應用程序本地化。它可能不匹配。 – Kujta

+0

哦,對,我誤解了你的問題,對不起。如果它是您的應用程序,則可以嘗試在SharedPreferences中保存有關可用本地化的信息。因此,每次創建新的Resources類時,都會將新的localozation保存在一個字符串中。 – Vacutainer

+0

慢慢我相信這是唯一的方法。 CommonsWare提到了相同的情況。很傷心,我甚至無法檢查res文件夾的子文件夾。 – Kujta

相關問題