次のクラスを使用してXSDXML検証を実行します。
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
問題は、バリデーターによって返されるXSDエラーメッセージが常に英語であるということです。JAXP APIを使用してロケール対応の検証を呼び出すことは可能ですか?
次のクラスを使用してXSDXML検証を実行します。
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
問題は、バリデーターによって返されるXSDエラーメッセージが常に英語であるということです。JAXP APIを使用してロケール対応の検証を呼び出すことは可能ですか?
JAXPはAPIです。Apache Xerces
ローカリゼーション対応のメッセージを提供するのは、実際の実装(たとえば)次第です。
ただし、通常、システムレベルのライブラリと実装(JAXPやXercesなど)は、システムのデフォルトロケール(式から返されるもの)に基づいてローカライズされたメッセージを提供しますjava.util.Locale.getDefault()
。これもOS固有です。
たとえば、Microsoft Windowsでは、Regional Settings
ウィンドウを使用してシステムのデフォルトロケールを変更できます。
user.language
必要に応じて、およびシステムプロパティを指定することで、JVMが使用する「デフォルトロケール」をオーバーライドできますuser.region
(たとえば、-Duser.language=fr
JVM-Duser.region=CA
がデフォルトロケールとして「カナダフランス語」を生成するようにします。最終的に、この設定はJAXPのコードになります。 .Xercesがカナダフランス語のリソースバンドルを提供している場合、カナダフランス語のメッセージが発行されます。
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"));
それが役に立てば幸い。
どうやら私が望むことを達成する方法はありません。