Allows for substitution of variables in a String.
In addition, it's possible, to use a ResourceBundle for translation of
the substituted values. This addresses the special case, when
substitutions are arbitrary Objects, aren't human readable or have to
be localized. For example Locales, MessageIDs, ErrorIds, etc.