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; 
} 
Смежные вопросы