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

原创 2004年02月07日 22:56:00

1        考虑多语言的问题

对于多语言,需要考虑两个方面,一个是界面,一个是数据库信息,对于界面的多语言问题比较简单,只要建立相应的资源文件就可以了,这里不再多说;比较复杂的是数据库信息的多语言化,这里说说Freight.net的解决方案。

Freight.net将使用Storm.MultiLanguage构件来处理多语言。

该构件可对数据库中的字符串数据表及XML格式的字符串数据表进行操作。默认的数据库表名为DisplayString,默认的XML文件名为DisplayStringData.XML

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

对数据库中的字符串数据表支持多数据库及同一数据下多数据表的操作。数据库连接字符串在Storm.AppSetting的配置文件中指定。

 

XML格式的字符串数据表,默认存放路径由Storm.AppSetting的配置文件中“XMLPath”的设置决定,否则,会直接置于应用程序目录下,对于Web应用程序,会保存在相对于应用程序启动目录下,IIS5Windows/System32IIS6Windows/System32/INetSrv

非默认的XML格式文件的存放路径由Storm.AppSetting的配置文件中“*XMLPath”的设置决定,其中星号代表指定的XML文件集名称,否则,会直接置于应用程序目录下, 对于Web应用程序,会保存在相对于应用程序启动目录下,IIS5Windows/System32IIS6Windows/System32/INetSrv

 

LanguageData数据集用于记录应用程序中可用的语言,存放路径由应用程序配置文件配置节中“XMLPath”的设置决定,否则,会直接置于应用程序目录下, 对于Web应用程序,会保存在相对于应用程序启动目录下,IIS5Windows/System32IIS6Windows/System32/INetSrv

 

支持绝对和相对路径,对于Web应用程序,相对路径表示相对于应用程序启动路径,IIS5Windows/System32IIS6Windows/System32/INetSrv

 

应用程序的默认语言在Storm.AppSetting的配置文件中“DefaultLanguage”来设置。

 

以上是构件的简单描述,现在看一下数据结构:

LanguageData

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

可以看到这张表很简单,它定义了应用程序将支持哪些语言,当需要支持新的语言是也很简单。

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

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

 

(未完待续)

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

3     考虑以上两种情况的综合          当以上两种情况凑在一块的时候,情况还会复杂一些,因为在我们的这个解决方案中,多语言和信息的主体是采用的松耦合,如果不采用松耦合就不能保证其通用性和...
  • lornshrimp
  • lornshrimp
  • 2004年02月06日 10:02
  • 720

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

2                  考虑一个数据集中有多个数据表的问题 好处是什么? 很重要的一点,可以很方便的导航取得相关的信息,如Province.GetCityRows ()可以获得这个省下面...
  • lornshrimp
  • lornshrimp
  • 2004年02月07日 22:56
  • 778

android开发 多语言和国际化

我们建好一个android 的项目后,默认的res下面 有layout、values、drawable等目录 这些都是程序默认的资源文件目录,如果要实现多语言版本的话,我们就要添加要实现语言的对...
  • lanjianhun
  • lanjianhun
  • 2012年12月24日 18:37
  • 9956

多语言和自定义CSS

最近在一个SharePoint 2010项目中发现,在装了英文、日文语言包之后,在网站设置的语言设置中,选择备用语言的时候,系统返回一个异常,大意是包含自定义样式表(CSS)的网站不支持多语言。 之...
  • lance_lot1
  • lance_lot1
  • 2012年09月10日 15:48
  • 403

wpf多语言和换肤

http://www.cnblogs.com/bdstjk/archive/2013/05/11/3072523.html   http://www.cnblogs.com/scy251147/arc...
  • liuhaisong290
  • liuhaisong290
  • 2013年08月25日 22:55
  • 333

DotNet的多语言和本地化

 感觉非常方便,这也是一直以来MS的优势,集成的优势最近一个小项目用到VS2005,用了点AJAXTOOL,很简单的2个设置就搞定了不同情况的不同语言提示显示信息在SCRIPTMANAGER的属性里设...
  • realonedot
  • realonedot
  • 2008年12月15日 16:51
  • 189

用.xsd (数据集)生成数据层(DAL)代码

首先新建二个项目(BLL:逻辑层,DAL:数据层):如下图然后在DAL(数据层)中新建一个.xsd数据集(名字可以自己定义):如下图创建好了如下:打开这个已创建好的TestDataSet.xsd:如下...
  • lisenustc
  • lisenustc
  • 2009年11月30日 16:24
  • 3691

android开发 多语言和国际化(转)

我们建好一个android 的项目后,默认的res下面 有layout、values、drawable等目录 这些都是程序默认的资源文件目录,如果要实现多语言版本的话,我们就要添加要实现语言的对...
  • zhuiqiuk
  • zhuiqiuk
  • 2015年08月05日 17:42
  • 475

Android支持多国语言化Values命名

android多国语言文件夹文件汇总如下: 维吾尔文(中国):values-ug-rCN 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中...
  • u010687392
  • u010687392
  • 2015年05月18日 12:25
  • 1710

C# DataSet(内存中的数据集)

DataSet 中有多个 DataTable;DataTable 中有多个DataColumn (列名),多个Rows (数据行)。 using System; using System.Colle...
  • houyanhua1
  • houyanhua1
  • 2017年12月13日 17:44
  • 121
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.net多语言和数据集内多数据表的处理(1)
举报原因:
原因补充:

(最多只允许输入30个字)