.net多語言和資料集內多資料表的處理(1)

來源:互聯網
上載者:User
資料 1 考慮多語言的問題
對於多語言,需要考慮兩個方面,一個是介面,一個是資料庫資訊,對於介面的多語言問題比較簡單,只要建立相應的資源檔就可以了,這裡不再多說;比較複雜的是資料庫資訊的多語言化,這裡說說Freight.net的解決方案。

Freight.net將使用Storm.MultiLanguage構件來處理多語言。

該構件可對資料庫中的字串資料表及XML格式的字串資料表進行操作。預設的資料庫表名為DisplayString,預設的XML檔案名稱為DisplayStringData.XML



對資料庫中的字串資料表支援多資料庫及同一資料下多資料表的操作。資料庫連接字串在Storm.AppSetting的設定檔中指定。



對XML格式的字串資料表,預設存放路徑由Storm.AppSetting的設定檔中“XMLPath”的設定決定,否則,會直接置於應用程式目錄下,對於Web應用程式,會儲存在相對於應用程式啟動目錄下,IIS5為Windows\System32,IIS6Windows\System32\INetSrv

非預設的XML格式檔案的存放路徑由Storm.AppSetting的設定檔中“*XMLPath”的設定決定,其中星號代表指定的XML檔案集名稱,否則,會直接置於應用程式目錄下, 對於Web應用程式,會儲存在相對於應用程式啟動目錄下,IIS5為Windows\System32,IIS6Windows\System32\INetSrv



LanguageData資料集用於記錄應用程式中可用的語言,存放路徑由應用程式設定檔配置節中“XMLPath”的設定決定,否則,會直接置於應用程式目錄下, 對於Web應用程式,會儲存在相對於應用程式啟動目錄下,IIS5為Windows\System32,IIS6Windows\System32\INetSrv



支援絕對和相對路徑,對於Web應用程式,相對路徑表示相對於應用程式啟動路徑,IIS5為Windows\System32,IIS6Windows\System32\INetSrv



應用程式的預設語言在Storm.AppSetting的設定檔中“DefaultLanguage”來設定。



以上是構件的簡單描述,現在看一下資料結構:

LanguageData:


可以看到這張表很簡單,它定義了應用程式將支援哪些語言,當需要支援新的語言是也很簡單。

DisplayString:


可以看出,這張資料表也很簡單,而且他的使用也會非常靈活,它可以以多個不同的名稱同時存在於多個資料庫中、多個檔案夾下……

構件提供了一些方法來訪問資料:

GetDisplay方法用來獲得需要的語言下的顯示字元;

SaveDisplay方法用來儲存指定語言的顯示字元;

GetDisplayDS方法則將相關對象的所有語言的顯示資料都取出來;

DelDisplay方法將指定對象的所有語言的顯示資料都清除掉。

在使用時,只要將目標資料的RefGuid儲存起來即可,如國家Country的名字(Name)需要儲存多語言,那麼在資料庫中之需要儲存NameGuid欄位即可,在擷取資料的時候資料集添加上Name欄位並調用GetDisplay方法將獲得的值填充進去就可以了。

通過在中介層編寫適當的方法還可以使使用者任意修改Name欄位的值,而系統會自動儲存回當前語言的記錄中。

舉個例子:系統的預設語言是“en-us”,某使用者在zh-chs的語言下添加了一條Country記錄,那麼這個國家的Name欄位值(假設是“美國”)會儲存到zh-chs語言的記錄下,因為這條記錄是新添加的,很明顯,這條記錄的en-us語言的記錄是沒有的,那麼系統會自動地為預設語言en-us也添加一條記錄,值為“美國”;然後,另一個使用者訪問這條記錄,他的語言是zh-cht,而這時這條記錄是沒有的,系統會顯示預設語言(en-us)的值“美國”,這當然就不對了,他只需要直接修改這個值為“美國”,儲存,系統就會自動再添加一條cn-cht的記錄值為“美國”,同樣使用en-us語言的使用者,只要直接修改Name為“USA”,系統就會自動修改en-us語言的顯示字串,其他語言不會有任何影響。而使用者卻不會感覺到這一點,在他看來就只是修改了這條Country記錄而已。這樣做的好處就是,每個使用者都只需要維護自己用的這種語言的記錄資訊就可以了,而不用考慮其他語言的問題,也可以非常方便的即使系統運行了一段時間後再次添加支援的語言,不需要在添加記錄的時候就需要添加所有語言的版本,只在需要的時候才添加相應語言的版本,從而使資料庫記錄數盡量的少。

當然,不要指望什麼事情都由這個構件一手包辦,為了實現以上這些功能,還是需要在中介層寫一些比以前稍多的代碼。具體我會在後面給出例子。



(未完待續)


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。