android API是否支持按值翻译字符串资源?
我知道我可以为不同的语言环境创建多个XML文件。我的问题是我从服务器获取了#34;默认语言环境"所以,我无法使用getString(int)
。
我想要getTranslation("myValueInDefaultLocale", "target locale")
答案 0 :(得分:1)
没有有效的方法来执行您的要求,而是修改服务器。如果您无法更改服务器,则可以执行此操作:
但这会有效非常慢。不要说我没有警告你。
以下是代码示例:
String translateFrom = "server reply";
Resources res = getResources();
Configuration conf = res.getConfiguration();
Locale savedLocale = conf.locale;
conf.locale = defaultLocale; // set to default locale here
res.updateConfiguration(conf, null);
// iterate through all string resources in default locale
int idTranslateTo = 0;
Field fields[] = R.string.class.getFields();
for (Field field : fields) {
int id = getResources().getIdentifier(field.getName(), "string", this.getPackageName()));
if (translateFrom.equals(res.getString(id)) {
idTranslateTo = id;
break;
}
}
// restore original locale
conf.locale = savedLocale;
res.updateConfiguration(conf, null);
// retrieve translated string from saved locale
if (idTranslateTo != 0) {
String translateTo = res.getString(idTranslateTo);
}