国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.net多語言和數據集內多數據表的處理(1)

2024-07-10 13:05:18
字體:
來源:轉載
供稿:網友

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記錄而已。這樣做的好處就是,每個用戶都只需要維護自己用的這種語言的記錄信息就可以了,而不用考慮其他語言的問題,也可以非常方便的即使系統運行了一段時間后再次添加支持的語言,不需要在添加記錄的時候就需要添加所有語言的版本,只在需要的時候才添加相應語言的版本,從而使數據庫記錄數盡量的少。

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



(未完待續)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 右玉县| 三原县| 漾濞| 扶绥县| 中阳县| 东乡| 通州区| 临夏县| 清苑县| 丘北县| 蕲春县| 萨嘎县| 循化| 石楼县| 云和县| 贡嘎县| 石台县| 平泉县| 梨树县| 建德市| 合山市| 富平县| 洱源县| 香河县| 固安县| 布尔津县| 普兰县| 托克逊县| 乐山市| 错那县| 星座| 绍兴市| 卢氏县| 甘肃省| 乌拉特前旗| 漾濞| 宜宾市| 图们市| 临海市| 周至县| 凤阳县|