Страницы

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

вторник, 10 декабря 2019 г.

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

#локализация #android


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


Ответы

Ответ 1



да, можно разместить в ресурсах 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);...

Ответ 2



UPD. Прочитав еще раз, понял что не подходит. Больше подойдет предыдущий ответ на вопрос: тут Оригинал:тут Мой краткий перевод-пересказ: Идеальным решением было бы использование множества модификаторов имени для папки ресурсов из одной группы (values-ru-ua-en-fr), но разрешены только модификаторы из разных групп (drawable-en-hdpi) Но это все еще не означае, что вам придется бесполезно копировать кучу одинаковых файлов. На помощь тут приходят ссылки на ресурсы (ориг. alias resources). Ссылка на http://developer.android.com/

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

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