многоязычное приложение для Android? - PullRequest
5 голосов
/ 18 марта 2011

Я должен сделать приложение для Android на 3 языках: немецком, английском и голландском. я сделал три папки в именах приложений для Android values-de и values-nl в каталоге res. теперь, когда пользователь выбирает определенный язык, я выполняю следующий код:

Resources res = getResources();
Configuration newConfig = new Configuration(res.getConfiguration());
newConfig.locale = Locale.ENGLISH;
res.updateConfiguration(newConfig, null);

все строки в разных папках значений имеют одинаковое имя, т.е. строка с именем add_site в папке значений имеет одинаковое имя в папке the values-de, но с другим значением. Мое приложение не загружает немецкое значение, когда я устанавливаю немецкий язык? в чем может быть проблема?

спасибо за помощь.

Ответы [ 2 ]

6 голосов
/ 18 марта 2011

Попробуйте ввести это значение в onCreate() сразу после вызова super.onCreate:

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

РЕДАКТИРОВАТЬ: Вот еще один подход . Кажется, он очень гибкий, но в комментариях есть разногласия относительно того, работает ли он на всех версиях Android.

0 голосов
/ 14 октября 2015

Установка языкового стандарта конфигурации недостаточна, если вы также поддерживаете язык с другим направлением расположения LTR или RTL.

        Resources res = getResources();
        Configuration newConfig = new Configuration( res.getConfiguration() );
        Locale locale = new Locale( appLanguage );
        newConfig.locale = locale;
        newConfig.setLayoutDirection( locale );
        res.updateConfiguration( newConfig, null );
...