2

我有一个存储在局部变量中的计算字符串。 我没有办法事先知道字符串,但我最终肯定知道它将是其中不同语言的翻译字符串在string.xml文件中的字符串之一。android:以编程方式本地化一个动态字符串

如何将这样的动态字符串转换为当前语言环境?

+1

对于动态翻译不把字符串转换为字符串。 XML。 string.xml仅用于静态资源。在这里使用编程方法。 – AndRSoid

回答

0

尽管这将需要相当长的,你可以通过所有的字符串迭代,检查它们是否匹配,并返回如果他们这样做的本地化版本:

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; 
}