Java中的I18n XSD验证错误消息

时间:2010-10-08 10:57:24

标签: java xml localization xsd jaxp

我使用以下类执行XSD XML验证:

import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

问题是验证程序返回的XSD错误消息始终是英语。是否可以使用JAXP API调用区域设置感知验证?

3 个答案:

答案 0 :(得分:1)

JAXP是一个API;由实际实现(例如,Apache Xerces)来提供本地化感知消息。

但是,通常情况下,系统级库和实现(例如JAXP和Xerces)将提供基于系统默认语言环境(从表达式java.util.Locale.getDefault()返回的任何内容)本地化的消息;这也是特定于操作系统的。

例如,在Microsoft Windows上,您可以使用Regional Settings窗口更改系统的默认语言环境。

如果需要,可以通过指定user.languageuser.region系统属性(例如,-Duser.language=fr-Duser.region=CA来覆盖JVM使用的“默认语言环境”会使JVM产生“加拿大法语”作为默认语言环境。最终,此设置将获得JAXP的代码。如果Xerces提供加拿大法语资源包,则将发出加拿大法语消息。

答案 1 :(得分:0)

显然,没有办法实现我想要的目标。

答案 2 :(得分:0)

仅当内部存在资源文件时,才应打印日语错误消息 java.xml \ com \ sun \ org \ apache \ xerces \ internal \ impl \ msg \ XMLSchemaMessages_ja.properties 但是我没有找到如何添加更多语言的方法。

Validator validator = schema.newValidator();
validator.setErrorHandler(errorHandler);
validator.setProperty("http://apache.org/xml/properties/locale", Locale.forLanguageTag("ja"));

希望有帮助。