2013-10-17 30 views
1

Supose我的項目中有strings.xml,strings-es.xml和strings-ca.xml。我如何知道哪些文件是爲字符串加載的?注意:我不需要OS語言。在Android中檢測加載的本地化資源

編輯:如果我的設備語言環境是意大利語,我想返回英語,因爲我的應用程序沒有翻譯成意大利語。

+0

在運行時,Android系統使用基於當前爲用戶設備設置的區域設置的相應字符串資源集.http://developer.android.com/training/basics/supporting-devices/ languages.html。 for locale http://developer.android.com/reference/java/util/Locale.html – Raghunandan

+1

感謝您的評論。是的,我知道,但正如我所說的,我不想要那個設備區域設置。 –

+0

這是做什麼'Locale.getDefault()。getDisplayLanguage()'?提供默認的設備語言 – Raghunandan

回答

3

我不認爲有任何直接的apis。解決方法是,在每個xml文件中都有一個字符串資源,並且此字符串資源可以解釋哪個資源被加載。

例如,

<string name="language">English</string>

和字符串,es.xml文件,你可以有

<string name="language">espanol</string>

,並在代碼中你可以檢查此字符串的值就知道當前加載的語言。

但是,android會根據操作系統語言加載相應的xml文件。因此,您只需檢查相應的操作系統語言即可知道加載了哪個XML文件。這可以通過Locale.getDefault().getDisplayLanguage();

+0

非常感謝你!這就是我在我的第一個想法,但我只想要一個更好的選擇。無論如何,儘管我認爲這不是安全的(就可維護性而言),但它的功能就像是一種魅力。 –