2013-09-26 28 views
0

我有解析XML並使用exception.getMessage()exception.getLocalizedMessage()返回相同)的解析器錯誤列表生成報告,並且可以被人類讀取和理解的服務。如何使用英語以外的語言本地化此異常消息?SAXParseException localized

+0

國際化可能是你正在尋找的 –

+0

是的,你說得對。你知道如何有效地做到這一點嗎? – marioosh

+0

我認爲最好的辦法是有一些屬性文件定義國際語言的所有屬性,並將默認設置爲英語(例如) –

回答

3

我找到了解決辦法。首先需要從Apache Xerces得到XMLSchemaMessages.properties。我從http://xerces.apache.org/下載了Xerces-J-src.2.11.0.tar.gz,解壓並從位置:...\src\org\apache\xerces\impl\msg獲取此文件。

現在將此文件重命名爲XMLSchemaMessages_pl.properties或本地化您需要並放置在類路徑中。我有Maven的項目,所以我把這個文件放到:src\main\resources\com\sun\org\apache\xerces\internal\impl\msg

就是這樣。此文件的更改將在異常消息中顯示。

2

根據java doc,您需要擴展SAXParseException並覆蓋getLocalizedMessage,默認實現將返回與getMessage相同的值。

編輯: 您可以爲每種語言分別設置屬性文件,每個語言文件中都可以有codelocal message。 當您提升SAXParseException時,根據locale和一些code,將返回相應的message

MySAXParseException ex = new MySAXParseException(<code>); 
+0

我同意你的看法,但是如何翻譯所有這種特定異常的情況'SAXParseException 「如果你知道我的意思......? – marioosh

+0

+很好的建議。 –