我的Android应用程序的每个本地化的不同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());
}
答案 0 :(得分:2)
好吧,如果您想解析XML文件,它就不会那样工作!
但是这个方法适用于我(我用它来显示WebView片段中的本地化html文件,用于提供“用户指南”):
将所有文件放在/assets
文件夹中(最终放在其他文件夹下,例如/assets/data
)。
将每个文件命名为myfile-en.xml
,myfile-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);