我有一个存储在本地变量中的计算字符串。 我无法提前知道该字符串,但我可以确定最终它将是其中一个字符串,其不同语言的翻译在string.xml文件中。
如何将这样一个动态字符串翻译为当前语言环境?
我有一个存储在本地变量中的计算字符串。 我无法提前知道该字符串,但我可以确定最终它将是其中一个字符串,其不同语言的翻译在string.xml文件中。
如何将这样一个动态字符串翻译为当前语言环境?
public String translatedString(String s)
//Set the locale to en-us
Resources standardResources = context.getResources();
AssetManager assets = standardResources.getAssets();
DisplayMetrics metrics = standardResources.getDisplayMetrics();
Configuration config = new Configuration(standardResources.getConfiguration());
config.locale = Locale.US;
Resources defaultResources = new Resources(assets, metrics, config);
//Iterate over string res
Field fields[] = R.string.class.getFields();
for (Field field : fields) {
String value = defaultResources.getString(defaultResources.getIdentifier(field.getName(), "string", this.getPackageName())));
if (value.equals(s)){
return getResources().getString(getResources().getIdentifier(field.getName(), "string", this.getPackageName())));
}
}
return null;
}
config.locale
已经被弃用了。请使用 config.setLocale(Locale);
。 - spartygwResources
构造函数已被弃用,您不再需要使用Assets
或DisplayMetrics
。请使用Context::createConfigurationContext
。 - spartygw