Когда пользователь меняет язык приложения, он не меняет текст, он меняет направление макета - PullRequest
0 голосов
/ 01 июля 2018

Это первый раз, когда я это делаю. Я хочу сделать выбор языка в моем приложении, содержащем Arabic и English. У меня проблема, когда пользователь меняет язык приложения, он не меняет тексты, он меняет только направление макета. У меня есть файл 2 String. Оригинал для English и другие string-ar для Arabic Я искал и пробовал много решений. Один из них находится в этой статье

А вот и мой код.

 public void setLocaleAr (){
    Locale locale = new Locale("ar");
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    Resources resources = getResources();
    resources.updateConfiguration(config, resources.getDisplayMetrics()); //deprecated
}

Редактировать: когда я использую свой код. Тексты в моем Spinner изменились. но текст в файле xml не изменился.

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Язык и другие конфигурации применяются к действию при его создании. Поэтому, если вы хотите, чтобы изменения были применены, вам нужно воссоздать действие с помощью метода refreshate ().

0 голосов
/ 01 июля 2018

Я использовал пример из этой статьи во многих проектах, и он прекрасно работает.

Как говорится в статье, вам нужно обновить текст или любые другие зависящие от языка ресурсы один за другим. Или вы можете вызвать activity.recreate (), чтобы перезапустить загруженную в данный момент активность. Затем действие перезагрузит ресурсы с правильным языком. Однако, если вы выберете эту опцию, ваши пользователи заметят это, потому что она закроет ваше приложение, и вы получите черный экран в течение очень небольшого промежутка времени, а затем снова восстановите свою активность.

...