摘要:本文基于三資企業的實際需求和軟件開發商開發成本的考慮,提出一種新的開發思路:在保證軟件系統業務規則和作業流程符合國際慣例的前提下,開發一種集成兩種或多種語言環境的應用系統,以滿足國內、國際市場的需求;而且,中外雙方的使用者可以在同一個系統中任意切換,以便于雙方更好地利用軟件系統提升企業的管理水平。與傳統的軟件產品相比較,這種軟件產品具有國內外市場空間大、軟件開發成本低、軟件性價比高等優勢。
關鍵詞:國際化;本地化;多語種軟件系統;數據庫
1 前言
隨著一些應用軟件的國際化,不同國家的用戶對軟件的操作界面提出了多語種化的需求。如果軟件具有多語種支持能力,則不必為每個語種開發其相應版本,從而降低開發成本,提高軟件的使用靈活性。
如何在一套軟件系統中解決語言環境不同帶來的一系列問題,就要求在軟件系統設計時是面向多種語言的,因此,軟件編程階段時就不得不設法解決軟件的國際化。
所謂的“國際化”是指把原來為英文設計的計算機系統或應用軟件改寫為同時支持多種語言和文化習俗的過程。在軟件創作的初期,一般的編程語言編譯、開發都是只支持英文的,為了適應更廣的語言和文化習俗,軟件有必要在設計結構和機制上支持多語言的擴展特性,這一過程稱為國際化。
一個國際化的軟件系統通常具有以下特征:有一個附加的本地化數據及擁有在全世界各個地區執行的能力;文本的元素,比如狀態信息或GUI截面的標簽,不是直接寫在程序中,而是被存儲在本地化的數據中,并且能被程序正確的動態的使用;支持新的語言時,不需要修改程序,不需要重新編譯;對于文化差異的數據,比如日期和貨幣,必須根據用戶的語言和習慣顯示不同的格式;可以被迅速本地化。
2 系統分析
一套軟件系統的正常運行,離不開軟件本身和操作系統的支撐。現在流行的操作系統有多種語言版本,而且,中文版操作系統已經完全支持中英文的錄入和顯示,在此無須考慮操作系統的語言支持問題。對軟件使用者而言,軟件系統操作語言障礙是影響軟件使用效率的最大問題。因此,在多語種軟件系統設計時,必須提供多語種版本的選擇或切換功能。
目前軟件界面多語切換主要有兩種方法,即使用配置文件和第三方多語種控件。使用配置文件時,多種語種數據存放在用戶可見的文本文件中,因而容易造成數據的丟失或損壞。而使用第三方多語種控件時,如果輸入大量的多語種數據,這些數據都編譯到可執行文件中,導致系統載入速度變慢,性能降低,另外如需修改某些翻譯值,則必須重新編譯,從而給使用帶來不便。本文使用的動態數據庫載入方式配合面向對象編程的繼承思想,可以避免上述缺陷。在數據庫中可以錄入大量的多語種數據,減少可執行文件大小,系統啟動快;當系統損壞或重做系統后,可以使用數據庫恢復機制,恢復系統數據,且不影響其他數據的使用。
作者歸納出與該系統實現有關的兩個主要方面:
系統界面主要包括:標題欄、菜單、工具欄、狀態欄、MDI子窗體的label標識、按鈕標簽、快捷鍵提示等;
人機交互信息主要包括:人機交互的提示信息、幫助信息、出錯信息等。
3 系統實現
根據以上分析結果,結合系統開發工具和數據庫所提供的功能,筆者提出實現多語種軟件系統的一種通用方法:將系統界面信息和交互信息歸類合并,動態地從數據庫表中提取系統界面和人機交互信息所需的顯示內容,并通過改變系統全局變量來提供中英文實時切換功能。
傳統的軟件開發方法都是把界面中的各種欄位標識在程序設計階段設定好,這種方法在單一的語言環境下可行,但在多語種集成環境下,界面的語言顯示方式由用戶選擇,因此,必須選擇彈性的開發方法。
換一種思路,直接從數據庫表中提取系統各個欄位的中(英)文標識,而且,針對每一個所要顯示的內容,在相關表中建立兩個字段分別代表該標識的兩種語言顯示內容,通過系統全局變量(boolean類型)來控制兩種語言使用環境。
然而,在系統設計和軟件實現中,所要考慮的因素較多。如果對每個數據庫表及其字段都設置中英文兩個方式,再通過程序調用,這種方法可行,但浪費數據庫資源,并且在程序實現時較繁瑣。
經過對多語言軟件系統功能和實現方法的仔細分析和反復實驗,并考慮該實現方法的模塊化和通用性,提出了一種簡單易行而又高效的實現方法,即:新建與中英文語言版本轉換相關的三個數據庫表單,采用組件方法開發了對應的三個類。
說明如下:
FormName表:該表單與系統主菜單有關,包含所有數據庫表單的中英文名稱,提供MDI主窗體的菜單顯示內容;
FieldName表:該表單包括全部數據庫表及其對應的所有字段的中英文內容。提供MDI子窗體中的欄位標識;
SystemInfo表:該表單包含人機交互信息和標題欄、狀態欄、按鈕標簽、快捷鍵提示等的中英文字段;
ClsMenu類:和TableName對應,包含與中英文菜單轉換有關的函數和子程序,其中最主要的子程序是SetMenuCaption,該子程序根據系統全局變量來設置MDI主窗體的中(英)文菜單;
ClsField類:與FieldName表對應,包括與MDI子窗體中的欄位標識有關的函數和子程序,其中主要的子程序是GetFieldName,該子程通過調用FieldName表提取label標識的顯示內容;
ClsInfo類:與SystemInfo表對應,其中的主要函數是LoadInfo,負責調用SystemInfo表單,提供系統人機交互信息和標題欄、按鈕標簽、快捷鍵提示等的顯示內容。
在軟件實現時,為了滿足不同使用者的要求,該方法提供了兩種工作方式:
(1)在用戶登錄時,可以選擇系統的語言環境(中文或英文),系統將以用戶所選的語言作為系統運行語言;
(2)在進入系統后,利用熱鍵可自動切換系統中英文語言環境。
其中第二種工作方式的部分實現例程如下: Private Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)
If KeyCode=vbKeyF5 Then改變系統全局變量
ChangeGlobleVar
調用ClsMenu類,初始化中(英)文菜單InitMenu
‘調用ClsInfo類,設置界面中的標題欄
‘按鈕、狀態欄、快捷鍵提示信息。
SetWindowInfo
‘調用ClsField類,設置MDI子窗體欄位標識
GetLblCaption
End If
End Sub
4 結束語
以上介紹了中英文語言環境集成的軟件實現方法,實際上,這種方法具有很強的通用性。在保障系統商業規則和業務流程滿足國際化的前提下,系統地使用語言可以根據需要來拓展。即可以使用日文、韓文、泰文等語言環境,形成雙語的中/日、中/韓、中/泰等應用系統,或者只選擇其中一種語言環境。這樣就為國產軟件的國際化創造了必備的前期條件。在系統設計時采用面向對象編程的繼承思想提高了代碼的利用率,不僅保持了應用軟件界面的一致性風格,而且提高了應用軟件的開發效率。
參考文獻
[1]李華宇.Java的國際化和本地化原理及解決方法[J].微型機與應用,2001(11):32-33.
[2]包竹葦,李淼,張建.Java網絡傳輸中字符編碼問題的研究[J]].計算機工程與應用,2007(04):93-95.
[3]許暉,李涓子.J2EE系統國際化問題的解決方案[J].計算機工程,2005(18):79-80.
[4]蘇紅帆,黃寧寧,韋錄豐.Windows環境下軟件國際化開發的解決方案[J].廣西科學院學報,2006,22(4):279-283.
[5]姜湘崗,章小莉.實現軟件多語言用戶界面方法之分析[J].北京電子科技學院學報,2006(2):15-18.
[6]劉瑞新,等.VISUAL BASIC程序設計[M].北京:機械工業出版社,2006.