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