Как я могу определить все доступные ResourceBundles во время выполнения? - PullRequest
3 голосов
/ 15 декабря 2011

Мое Java-приложение локализовано в нескольких локалях. Для каждой локали есть файл свойств с переводами. Я загружаю это следующим образом:

ResourceBundle bundle = ResourceBundle.getBundle("MessagesBundle", Locale.getDefault());

Я хотел бы определить во время выполнения все доступные пакеты ресурсов. Пакеты находятся в файле jar моего приложения.

Как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 15 декабря 2011

Нет стандартного метода с классом ResourceBundle. Вы можете использовать ( hackish solution ) - Thread.currentThread().getContextClassLoader().getResource() метод или this.getClass (). GetResource ("/"). Посмотрите на другой поток SO, имеющий такой же заголовок .

1 голос
/ 15 декабря 2011

Почему вы не пытаетесь найти все файлы свойств в вашем пути к классам, которые начинаются с "MessageBundle" и заканчиваются на ".properties".Это грязно, но это сработает.

Вот полезный код, как это сделать - Код для поиска файлов на вашем пути к классам

0 голосов
/ 08 октября 2016

Если вы используете Spring, вы можете попробовать с PathMatchingResourcePatternResolver:

ClassLoader cl = this.getClass().getClassLoader(); 
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(cl);
Resource[] resources = resolver.getResources("classpath*:/MessagesBundle.properties") ;
for (Resource resource: resources){
    logger.info(resource.getFilename());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...