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