2015-10-02 4 views
0

Я разрабатываю приложение, которое позволяет пользователю изменять язык в настройках приложения. Но пока некоторые страны имеют 2 или более языков, а некоторые языки используются более чем в одной стране, мне нужно использовать формат xx-XX. Например, пользователи из Бельгии могут выбрать французский или голландский язык.android - Измените язык и страну программно

Я использую следующий фрагмент кода, чтобы изменить язык:

protected void setLocale() { 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    Locale locale = new Locale(dataManager.getLocale().toLowerCase()); 
    Locale.setDefault(locale); 
    conf.locale = locale; 
    res.updateConfiguration(conf, dm); 
} 

dataManager.getLocale() возвращает String как "FR-BE" или "п-BE".

У меня есть следующие файлы ресурсы:

values-fr/strings.xml values-fr-rBE/strings.xml values-nl/strings.xml values-nl-rBE/strings.xml

Но даже если я установить языковой стандарт nl-BE, он использует строку из values-nl каталога, но не из values-nl-rBE.

Итак, мой вопрос: «Как я могу сделать свое приложение для использования ресурсов для определенного языка и региона во время выполнения?»

+0

вам известно, что приложение локаль выбран автоматически в зависимости от устройства языка. –

+0

@RahulTiwari Я знаю, но каждый мой актив вызывает метод setLocale() 'в' onResume() '. И он работает, он использует строку для правильного языка, но не использует информацию о регионе. –

ответ

1

Вы должны указать страну во втором параметре конструктора Locale.

Locale (String language, String country)
конструирует новый Locale с использованием указанного языка и коды стран.

Например:

Locale locale = new Locale("nl", "BE"); 
Смежные вопросы