2013-03-08 4 views
0

У меня есть проблема с изменением всего текста в одной деятельности моего приложения ... Я использую этот код, чтобы изменить язык:Android: изменение языка активности

else if (LANGUAGE.equals("Russian")) 
     { 
      Resources res = this.getResources(); 
      // Change locale settings in the app. 
      DisplayMetrics dm = res.getDisplayMetrics(); 
      android.content.res.Configuration conf = res.getConfiguration(); 
      conf.locale = new Locale("ru-rRU"); 
      res.updateConfiguration(conf, dm); 
} 

в AndroidManifest я добавил эту строку:

<activity 
     android:name="com.vladimir.expert_suise.ThirdScreen" 
     android:label="@string/title_activity_third_screen" 
     android:configChanges="locale"> 
    </activity> 

и когда я запустить мое приложение на моем телефоне, язык не меняется = ( здесь screenshoot - screen where i need to change language

так, что случилось с моим код? (

P.S я также создал папку значения-ру-РСР и вставить туда переведены string.xml файл

+0

Не должно быть 'ru-RU' не ru-rRU, или я не прав? – codeMagic

+0

@codeMagic Вы имеете в виду код или имя папки? – vladimir

+0

Оба. Я действительно думал, что видел где-то вы могли просто использовать '' re '' для кода и значений-ru для имени папки. Работает ли он в других видах деятельности или нет? – codeMagic

ответ

1

Во-первых, изменение значения-ру-РСР к значениям-ру.

Вы можете использовать этот метод, чтобы получить ресурсу

public Resources getCustomResource(String lang){ 
     Locale locale = new Locale(lang); 
     Resources standardResources = activity.getResources(); 
     AssetManager assets = standardResources.getAssets(); 
     DisplayMetrics metrics = standardResources.getDisplayMetrics(); 
     Configuration config = new Configuration(standardResources.getConfiguration()); 
     config.locale = locale; 
     Resources res = new Resources(assets, metrics, config); 
     return res; 
    } 

Вы можете использовать его в вашем коде, как этот

else if (LANGUAGE.equals("Russian")) 
    { 
     Resources res = getCustomResource("ru"); 

}

надеюсь, что это поможет вам.

+0

как я понимаю, мне нужно только объявить этот код и ничего больше? – vladimir

+0

hmmm, ничего не работает = (на том же языке, что и все приложение – vladimir

+0

Я использую этот метод в своем приложении для арабского языка. Я создаю папку 'values-ar' и использую метод' getCustomResource ("ar"); '. Примечание: я редактирую мой ответ я использую «ru», попробуйте. – AwadKab