分享
 
 
 

.net多语言和数据集内多数据表的处理(1)

王朝c#·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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记录而已。这样做的好处就是,每个用户都只需要维护自己用的这种语言的记录信息就可以了,而不用考虑其他语言的问题,也可以非常方便的即使系统运行了一段时间后再次添加支持的语言,不需要在添加记录的时候就需要添加所有语言的版本,只在需要的时候才添加相应语言的版本,从而使数据库记录数尽量的少。

当然,不要指望什么事情都由这个构件一手包办,为了实现以上这些功能,还是需要在中间层写一些比以前稍多的代码。具体我会在后面给出例子。

(未完待续)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有