Можно ли загрузить ресурсы локализации во время выполнения? - PullRequest
8 голосов
/ 20 февраля 2012

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

Что я хочу:

  1. Приложение содержит только один string.xml с английскими строками.
  2. Когда пользователь запускает его - я вижу язык телефона пользователя и запрашиваю у своего сервера необходимый языковой файл.(ключи ресурсов будут такими же)
  3. Когда приходит новый файл ресурсов, весь интерфейс должен работать с новым файлом.

Вопрос в том, как изменить существующий или добавить новый string.xmlфайл во время выполнения?

Ответы [ 3 ]

3 голосов
/ 20 февраля 2012

Теперь я вижу только решение:

  1. Создайте "прокси-сервер локализации", который вернет мне необходимый ресурс (из string.xml или загруженного ресурса)
  2. Замените все getString() и getText() к вашему собственному методу getStringFromLocalization
  3. Переопределите TextView, Button и некоторые другие представления с помощью пользовательского и измените там методы init и setText.
3 голосов
/ 20 февраля 2012

Вы, очевидно, не можете изменить, загрузить или удалить strings.xml во время выполнения

Если вы хотите хранить местоположения, вам придется использовать хранилище SQLite для хранения переводов.

аналогично:
Как изменить файл strings.xml во время выполнения
модификация во время выполнения strings.xml

0 голосов
/ 04 марта 2016

Переопределение стандартного ресурса / языка с использованием файлов ресурсов, которые соответствуют времени, а затем увеличивают производительность по сравнению с настройкой.Делайте это только если вам это нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...