2012-11-20 4 views
1

Я работаю на нескольких языках на Android 2.2. Изменить язык в OnCreate из каждой деятельности, как это:Как правильно применять язык?

Locale locale = new Locale("nl"); 
    Locale.setDefault(locale); 
    Configuration config = new Configuration(); 
    config.locale = locale; 
    getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics()); 

Конечно я поставил этот код перед вызовом setContentView и добавлений андроида: configChanges = «локалите» в манифест. Но когда активность запуска проявляется в первый раз, некоторые слова меняются на нужный язык, но некоторые слова остаются на английском. Другие действия (не запускающая деятельность) изменили язык в порядке. И когда я возвращаюсь к активности запуска из других действий, он теперь корректно изменил все слова на нужный язык. Я не знаю, почему в первый раз запускаются некоторые слова в активности запуска, которые неправильно меняются на нужный язык.

Благодарим за помощь.

ответ

0

Наконец-то я нашел решение, полностью разрешившее мою проблему. Я понял, что языковой стандарт автоматически сбрасывается системой (или что-то, что может изменить локаль), поэтому я установил локаль по умолчанию, но он работал неправильно. Вот мое решение, вы должны создать класс, расширить приложение, а затем переопределить метод, как показано ниже:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // TODO Auto-generated method stub 
    Locale locale = new Locale(YourDesired_langCode); 
    newConfig.locale = locale; 
    super.onConfigurationChanged(newConfig); 

    Locale.setDefault(locale); 
    getBaseContext().getResources().updateConfiguration(newConfig,getBaseContext().getResources().getDisplayMetrics()); 
} 

Таким образом, каждый раз, язык по умолчанию сбрасывается из стороны вашего приложения, этот метод вызывается и сбросит default locale снова с нужным языком. Теперь это работает очень хорошо.

1

Почему бы вам не сделать это проще?

Вы можете просто создать разные каталоги значений языка в своем приложении (res/values-en, res/values-fr, res/values-nl, et ...), в котором вы сохраните значения, связанные с языками к строковому ключу.

Итак, как только будет создан ваш каталог «values-en», щелкните его правой кнопкой мыши, добавьте файл значений xml-файла Android, назовите его language.xml, затем нажмите «Далее», затем выберите «Язык» в левой панели отображаемый экран ", затем нажмите« Готово ».

Затем в этом недавно созданном файле создайте все значения ключа для каждой строки, которую вы хотите перевести. Затем, как только это будет сделано, скопируйте файл language.xml в другие другие значения - . каталог хх, и изменить значения всех строк

Таким образом, ваш файл language.xml в значениях-ан будет содержать:

<string name="hello">Hello</string> 

И файл language.xml в значениях-фр будет:.

<string name="hello">Bonjour</string> 

Затем, чтобы получить эти значения строки в вашей деятельности, Жюст вызов

Строка helloString = GetResources() GetString (R .String.hello);

Приложение будет автоматически загружать правильные строковые ресурсы в зависимости от конфигурации языка устройства

+0

Да, я знал, что и я имел папку ресурсов для всех моих поддерживаемых языков для sure.Because я хочу, чтобы изменить язык в самом мое приложение , так что это немного сложнее. – MichaelP

Смежные вопросы