2010-10-08 45 views
1

XSD驗證錯誤消息的我使用下面的類執行XSD XML驗證:的I18n在Java中

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

的問題是,通過驗證返回XSD錯誤信息總是在英語語言。是否可以使用JAXP API調用支持語言環境的驗證?

+0

這就是本土化,其實。你需要本地化消息反對將它們外化。順便說一句,如果沒有像localizedMessage這樣的屬性(這是常見的例子ceptions),你可以簡單地外化英文信息(這將是國際化)。 – 2010-10-08 13:57:37

回答

0

顯然有沒有辦法達到我想要的。

1

JAXP是一個API;它取決於實際實現(例如,Apache Xerces)提供本地化意識的消息。通常,系統級庫和實現(例如JAXP & Xerces)將根據系統的默認語言環境(無論從表達式java.util.Locale.getDefault()返回的內容)提供本地化的消息;但是,通常情況下,系統級庫和實現(例如JAXP & Xerces)這又是特定操作系統。

在Microsoft Windows,例如,可以使用Regional Settings窗口中更改系統的缺省語言環境。

如果你願意,你可以重寫通過指定user.languageuser.region系統屬性(例如使用JVM中的「默認語言環境」,-Duser.language=fr-Duser.region=CA將使JVM產量「加拿大法語」作爲默認語言環境,最終,該設置將獲得JAXP的代碼。如果Xerces的提供加拿大法語資源包,然後加拿大法語消息將被髮出。

+0

問題是我想在運行時傳遞語言環境。 – 2010-10-24 18:07:16

+0

JAXP標準不提供在運行時指定區域設置的方法。我相信其背後的原因是,在運行時真正需要在多個語言環境中提供這些消息是非常不尋常的。這不是通常表現給最終用戶的消息類型,而是管理員;這就是爲什麼我相信,JAXP規範足以滿足一個語言環境 - 系統的語言環境。當然,某些JAXP實現可能提供了一種在運行時指定語言環境的方法......但是,您將自己綁定到特定的JAXP實現。 – Isaac 2010-10-24 22:53:05