我知道标题令人困惑, 但是当我尝试从strings.xml
获取现有字符串的id键时,我遇到了一个持久的问题 像这样 我有三个值文件夹: values,values-fr,values-ar;我有一个字符串ID:
R.id.center
在屏幕上打印时,此ID显示: 在值
"Center"
in values-fr
"Centre"
in values-ar
"وسط"
我的问题是: 有没有办法通过传递“中心”或“中心”或“وسط”作为参数来检索int id
喜欢“وسط”.getId或(“中心”).getId 我知道这些方法不存在:)``
答案 0 :(得分:1)
编辑:经过测试和工作。现在包括语言环境支持。
public void listValues() {
Field[] fields = R.string.class.getFields();
String[] locales = Resources.getSystem().getAssets().getLocales();
for (int x = 0; x < locales.length; x++) {
System.out.println("checking for all ressources for the locale=" + locales[x]);
for (int i = 0; i < fields.length; i++) {
try {
System.out.println("name=" + fields[i].getName() + " value=" + getLocalizedResources(this, new Locale(locales[x])).getString(fields[i].getInt(fields[i].getName())));
} catch (IllegalAccessException ex) {
System.out.println(".. catch it if you want it");
} catch (RuntimeException rex) {
}
}
}
}
@NonNull
Resources getLocalizedResources(Context context, Locale desiredLocale) {
Configuration conf = context.getResources().getConfiguration();
conf = new Configuration(conf);
conf.setLocale(desiredLocale);
Context localizedContext = context.createConfigurationContext(conf);
return localizedContext.getResources();
}