Страницы

Поиск по вопросам

вторник, 16 октября 2018 г.

Android. Локализация

Нужно сделать так, что бы при некоторых локалях использовался по дефолту русский, а при некоторых английский. Вижу такое решение: во всех соотвествующих папках values-xx, вставить файл такой же как и в values-ru, а в других такой же файл как и в values-en. Но ведь их довольно много... можно как то по - другому?


Ответ

да, можно разместить в ресурсах values-xx с указанием кода нужной локали(коды локалей можно посмотреть вот в этой таблице во второй колонке), а строковые ресурсы разместить в values-en и values-ru. При запуске приложения читаем локаль из values-xx и пишем Locale locale = new Locale("код прочитанной локаили"); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); UPD: английский язык я бы посоветовл сделать по умолчанию и разместить в папкe values без модификаторов. UPD[2]: Как я понял из задачи, то есть группы локалей, которым нужно показывать английский интерфейс, а другим группам русский. Так вот, в тех группах, где нужен русский интерфейс вы в value-xx пишите строковый ресурс с локалью "ru", аналогично для английской. Когда будете считывать локаль String localeCode = getResourses().getString(R.string.locale) андроид сам определить от куда взять. А потом выполняете Locale locale = new Locale(localeCode);...

Комментариев нет:

Отправить комментарий