src/java
src/resource/foo/messages.xml
messages_fr.xml
ResourceBundle bundle = ResourceBundle.getBundle("foo.messages", Locale.ENGLISH);
error:
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name foo.messages, locale en
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1581)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1396)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:854)
If they are *.properties, no problems.
How to load XML resource bundles?
CodePudding user response:
By default, Java SE ResourceBundle.getBundle(...)
only understands loading of resource bundles implemented as Java classes or ".properties" files.
If you want to load a ResourceBundle
from an XML file, you need to provide a custom ResourceBundle.Control
implementation that implements the resource search and loading strategies.
There is an example in the ResourceBundle.Control
javadocs; look for "Example 2".
I briefly searched for a 3rd-party implementation of an XML ResourceBundle
provider, but I couldn't find anything generic.
(Asking recommendations is off-topic anyway.)