2016-12-20 9 views
3

Как мы уже знаем, например, мы не можем изменить значения и файлы папки res во время выполнения,Файл файла string.xml для Android с сервера

Я работаю над приложением, в котором мы поддерживаем более 25 языков, размер APK сильно увеличивается из-за этих строковых файлов, мы очень обеспокоены тем, APK, поэтому мы не хотим хранить все эти файлы string.xml локально в проекте (внутри apk).

Что мы имеем в виду, что мы будем держать только английский string.xml внутри res, а все остальные локали string.xml должны быть загружены с сервера на запуск приложения на основании необходимости.

Итак, мы планируем создать наш собственный getResource(key, currentLocale), а затем это будет прочитано из XML (или текстового) файла, который будет загружен с сервера.

Пожалуйста, предложить какие-либо идеи лучше или несколько способов вокруг него,

Спасибо за поддержку

+1

Вы могли бы использовать некоторые реализации базы данных SQLite? Заполните базу данных необходимыми языками, а затем прочитайте ее. –

+0

Надеюсь, это поможет вам: http://stackoverflow.com/questions/9365328/can-localization-resources-be-downloaded-in-runtime – MdFazlaRabbiOpu

ответ

1

Unfortunatelly ресурсы не могут быть изменены после компиляции. Единственный способ для вас - загрузить язык shema с сервера (например, при запуске приложения) и сохранить его (или обновить, если необходимо) в sqlite, файле или в общих настройках (варианты хранения: https://developer.android.com/guide/topics/data/data-storage.html#filesInternal).

0

Здесь Sqlite Option лучше для вашего состояния.

Ниже приводится структура таблицы базы данных (например, LangTable.)

--------- ---------- -------- - ------ --------- -------
langKey Locale_En Local_hn Local_Fr ...................... .n

---------- ---------- --------- -------- ------ - ------ ---

btnOk нормально ..... ...... ..........

btnCancel отменить ........ . .... .... .......

Теперь вот способ получить Применимой локальной строку

public String getResource(String key, String local){ 

String value = ""; 

value = Select local from LangTable where langKey = 'key'; 

return value; 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^