J'ai un problème similaire à cette question: SAXParseException localizedComment internationaliser SAXParseException lors de l'analyse du fichier XML?
Je suis en train d'analyser un fichier XML et obtenir une liste des erreurs d'analyse (de SAXParseException) dans un plusieurs langues par exemple:
XmlImporter.importFile(params, "en")
devrait retourner une liste d'erreurs en anglais, XmlImporter.importFile(params, "fr")
devrait renvoyer une liste d'erreurs en français, XmlImporter.importFile(params, "pl")
devrait renvoyer une liste d'erreurs en langue polonaise.
Chaque appel de XmlImporter.importFile(params, "...")
peut être avec un environnement local différent.
C'est ma méthode de validation:
private void validate(String xmlFilePath, String schemaFilePath) throws Exception {
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new File(schemaFilePath));
Validator validator = schema.newValidator();
XmlErrorHandler errorHandler = new XmlErrorHandler();
validator.setErrorHandler(errorHandler);
try (InputStream stream = new FileInputStream(new File(xmlFilePath))) {
validator.validate(new StreamSource(stream));
}
XmlErrorHandler:
public class XmlErrorHandler implements ErrorHandler {
private List<String> errorsList = new ArrayList<>();
public List<String> getErrorsList() {
return errorsList;
}
@Override
public void warning(SAXParseException exception) throws SAXException {
errorsList.add(prepareExceptionDescription(exception));
}
@Override
public void error(SAXParseException exception) throws SAXException {
errorsList.add(prepareExceptionDescription(exception));
}
@Override
public void fatalError(SAXParseException exception) throws SAXException {
errorsList.add(prepareExceptionDescription(exception));
}
private String prepareExceptionDescription(SAXParseException exception) {
return "Error: " +
"colNumber: " + exception.getColumnNumber() +
" line number: " + exception.getLineNumber() +
" message: " + exception.getLocalizedMessage();
}
}
Je suppose que je dois passer en quelque sorte/quelque part java.util.Locale/String pour obtenir en exception.getLocalizedMessage() message personnalisé (en en, fr ou pl)?