I think you should try using
com.sun.org.apache.xerces.internal.impl.msg.XMLMessageFormatter
If you are writing a custom validation, try calling its formatMessage(...) method, where you could provide the locale name as parameter.
An example of the same is provided in the apache library itself. See it http://cr.openjdk.java.net/~coffeys/openJDK.7u21.sync/webrev/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_CN.java-.html
or
http://www.docjar.com/html/api/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter.java.html
Another approach could be that you may override the formatMessage() method to implement it in your own way. See the below implemented code of this method:
public String More ...formatMessage(Locale locale, String key, Object[] arguments)
throws MissingResourceException {
if (fResourceBundle == null || locale != fLocale) {
if (locale != null) {
fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
// memorize the most-recent locale
fLocale = locale;
}
if (fResourceBundle == null)
fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
}
This indicate that, if a resource bundle file is declared according to locale, the control should be able to pick a different resource file having error message in different language.