2010-12-14 76 views
5

我想基於Locale創建一個以多種語言打印的文檔。如何創建多語言報告?

我已經創建了2個資源包,一個用英文,一個用中文,但我不確定如何使用它們。

回答

0

由於文檔生成器可能是您的應用程序的一部分,您應該在某處有一個語言選擇器菜單項,複選框或組合框,它已經預先選定。

那麼,爲什麼不只是在報表生成之前添加一個讀取語言環境或所需語言的if語句,並相應地將相應的報表加載到語言環境。

這樣您將需要爲每種語言保留一個jrxml文件。只需手動翻譯標題和標籤就相當容易。

您的數據應該已經在您的數據庫中進行了翻譯,無論如何您都必須保留相關屬性值多種語言。

您需要修改相應語言的SQL查詢,但由於Query是您的jrxml的一部分,因此它將自動執行。

4

這裏是the sample如何實現國際化支持JasperReports

主要想法是使用特殊表達$R{}用於本地化文本和圖像。

爲圖像的示例:

<textField isBlankWhenNull="true"> 
<reportElement x="20" y="100" width="530" height="20"/> 
<textElement/> 
<textFieldExpression class="java.lang.String"><![CDATA[$R{sampleString}]]></textFieldExpression> 
</textField> 

或(所述MSG()法)::

<image scaleImage="Clip"> 
    <reportElement positionType="Float" x="20" y="20" width="100" height="50"/> 
    <imageExpression class="java.lang.String"><![CDATA[$R{image.flag}]]></imageExpression> 
</image> 

爲文本($ R {}語法)將樣品

text.message=The program picked up {0} as a random number. 
<textField isStretchWithOverflow="true" isBlankWhenNull="true"> 
<reportElement x="20" y="210" width="530" height="20"/> 
<textElement/> 
<textFieldExpression class="java.lang.String"><![CDATA[msg($R{text.message}, $P{number})]]></textFieldExpression> 
</textField>