Android — считывание существующих каталогов значений локали

#android #locale #directory

#Android #локаль #каталог

Вопрос:

Интересно, есть ли способ считывать значения локали из всех существующих каталогов значений.

Допустим, у меня есть следующие каталоги в моем res-каталоге

[…] значения values-de values-nl […]

Теперь мне нужен способ вернуть информацию о том, что для значений каталога существует язык de и nl.

Есть ли какой-либо способ, если да, то как?

Любая помощь будет оценена.

С уважением,

Кристиан

Ответ №1:

Ну, в идеале, ваше приложение не знает и не заботится о том, какие наборы ресурсов у вас есть. В конце концов, в этом весь смысл наборов ресурсов — изолировать ваше приложение от изменений в ресурсах.

При этом одна из возможностей заключается в написании сценария, являющегося частью вашего процесса сборки, который генерирует файл с запрошенными вами данными (например, XML-файл, содержащий список наборов ресурсов), который вы затем считываете во время выполнения.

Или сделайте так, чтобы в каждом наборе было «волшебное значение». Например, в res/values-de/strings.xml у вас может быть lang_de строка, а в res/values-nl/strings.xml у вас может быть lang_nl строка. Затем вы можете использовать отражение для перебора ваших строковых ресурсов и поиска тех, которые соответствуют lang_ шаблону. Это может быть значительно медленнее, чем первый вариант, особенно если у вас много строковых ресурсов.

Я не знаю способа запросить систему, чтобы выяснить, какие наборы ресурсов определены.