В проекте, над которым я работаю, я бы хотел загрузить различные ресурсы в зависимости от текущей локали. С помощью строк это довольно просто: просто создайте пакет ресурсов, добавив некоторые файлы, например Localization.properties
и Localization_de.properties
, а затем загрузите его через ResourceBundle.getBundle("domain.project.Localization")
.Загрузить локализованные ресурсы
Но как загрузить локализованные ресурсы, которые не являются простыми строками?
В частности, я хотел бы загрузить изображения и HTML-файлы на основе языка. Достаточно получить правильный URL-адрес этого ресурса. Например, я хотел бы иметь файл Welcome.html
и Welcome_de.html
и загрузить позже, когда текущий языковой стандарт - немецкий.
Просто используя getClass().getResource("Welcome.html")
не работает, он всегда возвращает именно этот файл и не выполняет обработку локали. Я не нашел удобный способ решить эту проблему, кроме ручного возиться с именем файла на основе текущей локали.
Одним из решений, которое я придумал, является добавление ключа в мой файл Localization.properties
, который содержит имя правильного локализованного HTML-файла. Но это кажется взломанным и неправильным.
Обратите внимание, что это не приложение для Android, а просто стандартное приложение для настольных компьютеров Java 8.
Почему бы просто не помещать файлы + карты локализации в разные папки? Как «/LANGUAGE/img/image1.jpg», где язык может быть «DE» или «EN» или что-то еще? Таким образом, вам просто нужно hava язык, который хранится где-то [и, возможно, нужно обрабатывать отсутствующие файлы (резервное копирование на ressource, который определенно завершен?)] – Cyphrags
@Cyphrags: На самом деле это хорошая идея. Я подумаю об этом. – DarkDust