2011-12-15 3 views
1

Приложение My Java было локализовано в несколько локалей. Для каждого языкового стандарта существует файл свойств с переводами. Я загружаю его следующим образом:Как я могу определить все доступные ResourceBundles во время выполнения?

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

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

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

ответ

1

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

Вот полезный код, как выполнить this- Code to find files on your classpath

+0

Как один сделать? –

1

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

0

Если вы используете 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()); 
} 
Смежные вопросы