If I have a Resource bundle property file:
A.properties:
thekey={0} This is a test
And then I have java code that loads the resource bundle:
ResourceBundle labels = ResourceBundle.getBundle("A", currentLocale);
labels.getString("thekey");
How can I replace the {0} text with some value
labels.getString("thekey", "Yes!!!");
Such that the output comes out as:
Yes!!! This is a test.
There are no methods that are part of Resource Bundle to do this. Also, I am in Struts, is there some way to use MessageProperties to do the replacement.
The class you're looking for is java.text.MessageFormat; specifically, calling
MessageFormat.format("{0} This {1} a test", new Object[] {"Yes!!!", "is"});
or
MessageFormat.format("{0} This {1} a test", "Yes!!!", "is");
will return
"Yes!!! This is a test"
[Unfortunately, I can't help with the Struts connection, although this looks relevant.]
There is the class org.apache.struts.util.MessageResources with various methods getMessage, some of them take arguments to insert to the actual message.
Eg.:
messageResources.getMessage("thekey", "Yes!!!");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With