Crystal Reports實作多語-Multilingual
在跨國企業裡,一套資訊系統可能會有許多不同國家的使用者在使用,所以系統介面的多語是相當常見的,同樣地也有一些資訊是不同國家的使用者都想要關心的,這些資訊可能都在同一份報表中,為各地不同使用者而開發多份不同語文的報表版本,除了線性的開發成本增加外,另外也可能因不同版本報表,造成的溝通成本增加及決策延誤,報表的內容其實都是相同的,只是需要用不同的語系來說明這些資訊的意義,報表的多語應用就是為了節省這些成本而存在。
資訊系統的多語介面使用非常廣泛
在Crystal Reports我們可以使用User Function Library (UFL),根據地區語系查閱外部檔案中不同語系的顯示值來達到多語的效果,這些UFL可以被用在Crystal Reports 2008和BusinessObjects Enterprise XI 3.1的使用情境,首先我們要先下載幾個檔案,其中有兩個dll檔案:u212samp.dll和xerces-c_3_0.dll,將其置放在安裝Crystal Reports designer或BusinessObjects Enterprise主機的下列路徑資料夾內:C:\Program Files\Business Objects\BusinessObjects Enterprise 12.0\win32_x86 (64-bit環境為Program Files (x86)),取代原有的dll檔案。
然後在C:\ProgramData路徑下 (Windows 2003/XP為C:\Documents and Settings\All Users\Application Data)建立一個名稱為LocalLookup的子資料夾,將下載檔案中的lookup.xml檔案置放在此資料夾內,就完成了相關的設定。
接著我們來研究lookup.xml檔案的內容,編輯檔案後可見基本架構如下:
<?xml version=”1.0″ encoding=”utf-8″?>
<localizations xmlns:dt=”urn:schemas-microsoft-com:datatypes”>
<key value=”CountryTitle”>
<localization locale=”zh_TW”>國家</localization>
<localization locale=”en_US”>Country</localization>
<localization locale=”ja_JP”>国家</localization>
</key>
<key value=”RevenuesTitle”>
<localization locale=”zh_TW”>銷售金額</localization>
<localization locale=”en_US”>Revenues</localization>
<localization locale=”ja_JP”>販売の金額</localization>
</key>
</localizations>
其中的key標籤,就是決定要用多語顯示的關鍵字及顯示值,當我們在這個xml檔案中維護了這些資訊後,就可以在Crystal Reports designer建立公式欄位,公式為Lookup(lookup.xml檔案中的關鍵字, ContentLocale),使用這個公式之後Crystal Reports就會依據關鍵字找到xml檔案中對應的標籤,再由開啟報表的client機器是何地區語系來決定要傳回哪個顯示值。
以上面的標籤內容為例,我們在一份報表的銷售金額上放一個公式欄位為Lookup(“RevenuesTitle”, ContentLocale),此時若client機器的地區語系是中文(台灣)會顯示”銷售金額”;若是英文(美國)就會顯示” Revenues”;日文(日本)則是” 販売の金額”,下面是一張實作多語的報表在不同地區語系的client開啟的差異:
中文(台灣)
英文(美國)
日文(日本)
下個世代的Crystal Reports是Crystal Reports 2011及Crystal Reports for Enterprise,Crystal Reports for Enterprise使用語意層為資料來源,多語的實作也同Web Intelligence報表使用Translation Manager。透過多語的實作,來自世界各地不同國家的使用者不只可以用自己熟悉的語言使用資訊系統,還可以用自己熟悉的語言快速獲得報表中的資訊,更重要的是,報表製作人員不再需要把報表每一種語言重新製作一次,因此可以省下大量的時間人力成本。