2014-12-04 17 views
1

我目前正在爲i18n應用程序工作。在這個應用程序中,我們使用Struts和JSTL庫來外化硬編碼文本。在java struts項目中,i18n XSL文件的推薦方法是什麼?

除了一些XSL(用於生成PDF)外,本應用程序中的大部分文本都是外部化的。我想將這些XSL中的硬編碼文本外部化到我已經創建的包中。我的一個約束:所有可翻譯的文本必須在少數屬性文件中重新組合。

是否可以使用類似FMT標籤系統的東西? 還是有一些默認或推薦的Java/XML機制? 或者我是否應該創建一個用作資源的bean,以便能夠在捆綁包中查找文本?

在此先感謝

第二個條目

通過在代碼不斷深入,我發現PDF文件都通過Apache FOP生成。我將嘗試將this tutorial改編爲我正在開發的項目。

如果有人有更多的想法,特別是如何使用資源束而不是Lang.xml文件。

回答

1

我終於決定使用FOP API的一些內置功能。

由於Java的Apache FOP API使用Sax,我可以將Java對象傳遞給解析的XSL。我只需要有這樣一行:transformer.setParameter("translater", new MyTranslater());在使用我的變壓器之前(MyTranslater有一個名爲getTranslattedText(String key)的方法,此方法能夠在密鑰在其中的情況下從捆綁中檢索一些文本)。

然後我不得不補充兩兩件事:通過在文件的第一行加入

  • 在XSL文件xmlns:i18n="java:com.mypackage.of.MyTranslater"
  • 參數的第一個標籤對應的命名空間

最後,要使用我的翻譯參數,我只需寫出: <xsl:value-of select="i18n:getTranslattedText($translater, 'one.random.key')" />

相關問題