阅读" myfile.xml"来自所有本地化

时间:2014-07-29 09:28:48

标签: java android xml file localization

我的Android应用程序的每个本地化的不同myfile.xml文件中都包含一些数据:

  • values / myfile.xml
  • values-de / myfile.xml
  • values-en / myfile.xml
  • values-en-rGB / myfile.xml
  • ...

是否有一种简单的方法可以从所有这些本地化文件中检索一些数据? (而不是阅读所有文件,检查它是否是正确的文件,并使用XML Reader解析它并检索所有本地化的值。即使可能,我也无法测试。)

修改,例如: values / myfile.xml

<resources>
    <string name="url">http://example.com/</string>
</resources>

values-de / myfile.xml

<resources>
    <string name="url">http://example.net/</string>
</resources>

values-en / myfile.xml

<resources>
    <string name="url">http://example.org/</string>
</resources>

...

从这些文件中,我想检索所有网址的列表,无论应用程序运行的区域设置如何。

第二次修改:

我尝试过的例子,不是一个好方法:

List<String> urls;

public void init(Context c){
    Locale lBase = Locale.getDefault();

    // Iter all languages availables
    for(Lang l : LanguageSpinner.langs){

        // set the locale
        Locale locale = new Locale(l.getlCode());
        updateLocale(c, locale);

        // Retrieve data and push to the list
        String url = c.getString(R.string.url);
        urls.add(url);
    }

    // re-set the default locale
    updateLocale(c, lBase);
}


public static void updateLocale(Context context, Locale l){
    Locale.setDefault(l);
    Configuration config = new Configuration();
    config.locale = l;
        context.getResources().updateConfiguration(config,context.getResources().getDisplayMetrics());
} 

1 个答案:

答案 0 :(得分:2)

好吧,如果您想解析XML文件,它就不会那样工作!

但是这个方法适用于我(我用它来显示WebView片段中的本地化html文件,用于提供“用户指南”):

将所有文件放在/assets文件夹中(最终放在其他文件夹下,例如/assets/data)。
将每个文件命名为myfile-en.xmlmyfile-de.xml,...

    String strLang = "fr"; // or "en", "de", "es", "it", ...
    String strFile = String.format
    (
        "file:///android_asset/data/myfile-%s.xml", strLang
    );

strFile将包含本地化文件的路径。

您可以自动设置strLang从当前区域设置中获取它,如下所示:

String strLang = Locale.getDefault().getISO3Language().substring(0, 2);

如果您只想检索本地化字符串,只需使用语法:

String myString = getResources().getString(R.string.url);