Можно ли как-то менять язык в приложении динамически, если его поддержки ранее не было?
Например, пользователь выбирает в настройках приложения испанский язык, откуда-нибудь с сервера скачиваются необходимые ресурсы, подключаются и затем в приложении контент отображается на испанском?
Я посоветую не городить велосипедов и воспользоваться стандартными средствами android.
Ну скачаете вы файлы/в бд /еще как то переводы а разметка ? у меня сейчас так раз приложение на английском и испанском, ui пришлось править, не сильно но все же.
Я бы не рискнул такое делать на лету
Тем не менее. заранее в alternate resources все включить не представляется возможным, так как возможно потом понадобится добавить поддержку очередного языка
ichernob: тогда остается только процетировать фею из бородатого анекдота )) ***сь если закзчик понимает что это будет существенно дороже и неизбежны баги с поползшей разметкой ... я бы сделал обычный rest и хранил бы в базе, при необходимости новое бы просто подгружал. Но вся идея так себе
gadfi: если я вас правильно понял, это не решает задачу полностью. Все равно нужно будет каким-то образом подключить скачанные файлы, вот только каким? Можно ли использовать для этой цели AssetManager?
ichernob: решит, вам по сути все равно откуда тянуть из бд или из файла, дело вкуса. Нет, папка assets доступна только на чтение, но вы можете скачать просто файлы. Куда вы положите перевод дело десятое, все равно руками значения устанавливать. Кстати достаточно простое решение ─ пишите все например в sharedpreferences (не суть можно в файл ), и с помощью https://developer.android.com/tools/data-binding/g... прямо в файле разметки тяните значение, так вы избавите себя от того чтобы везде в коде руками устанавливать текст, хотя это дело на любителя
Динамическую поддержку реализовать можно, НО, никто этим не занимается, так как никого не устроит такое: КАЧЕСТВО ПЕРЕВОД СВЕТИТЬ ПЛОХО, ПОНИМАТЬ СУТЬ БАСТА. (автоперевод =)
Переводом занимается специально подразделение заказчика, так что думаю, таких случаев не будет. Расскажите пожалуйста подробнее, как можно реализовать такую поддержку?
ichernob: Общих подходов несколько. Либо отдельные языковые файлы, которые можно менять и тем самым выполнять "перевод интерфейса". Либо ссылки на скачивание из онлайн-хранилища переводов.
А там внутри все фразы идут на всех доступных для выбора языков. Ну и соответственно программа хранит текущий выбранный язык (код) и подтягивает нужную фразу с установленным кодом. Вуаля....
Alejandro: как эти языковые файлы именуются у андроида? На stackoverflow нашел совет использовать APK expansion files: stackoverflow.com/questions/15164559/dynamic-andro...
или отказаться от стандартных средств андроида по работе с ресурсными строками и использовать какой-нибудь текстовый файл, который можно скачать, считать и проинициализировать какой-нибудь словарь (key: stringTag, value: text)