OMG, boo... I just finished looking up these APIs from memory and typing this LOL
At least for simple resource bundling, here are the APIs (without any attempt to organize them coherently or optimally):
import java.util.ResourceBundle;
import java.text.MessageFormat;
...
Locale currentLocale=...;
ResourceBundle myResources = ResourceBundle.getBundle("MyResources", currentLocale);
StringBuffer userMessage = new StringBuffer();
String unformatted = myResources.getString( "message-1" );
MessageFormat formatter = new MessageFormat(unformatted,currentLocale);
formatter.format(arguments, userMessage, null );
unformatted = myResources.getString( "message-2" );
formatter = new MessageFormat(unformatted,currentLocale);
formatter.format(arguments, userMessage, null );
unformatted = myResources.getString( "message-3" );
formatter = new MessageFormat(unformatted,currentLocale);
formatter.format(arguments, userMessage, new String[] { calculatedValue1, calculatedValue2 } );
return userMessage.toString();
All the examples include the ability for an external property file to reformat dates and money. The last example shows the ability to reorder values that your program must calculate because different languages choose to display them in different order.
Edit: added the import for MessageFormat