在下是新人,最近在做“综合资源国际化”的工作,整个国际化分为3部分:
1.GUI国际化
2.程序中写死的部分,如:MessageBox.Show(“提示信息”)
3.数据库的国际化
其中1和2都已经搞定了,但是3数据库的国际化 对我来说有点困难。请高人不吝赐教,如果是您来做,您会怎么想 如何去做,请说出您的解决方案 ,越详细越好。
先谢谢了。

解决方案 »

  1.   

    因为 GUI中显示的有些数据是从数据库中读取的,为了全面支持多语言,有必要对数据库进行多语言化。
    当在窗体上选择 英文界面时,不仅仅是GUI显示是英文的,而且从数据库中显示在界面上的数据也是英文的。
    在网上有人说要用多语言对照表。
    有没有人发表点意见。
      

  2.   

    首先感谢大家的支持,在大家的启发下,我有了一个办法,不知可行否?
    1.添加一张翻译配置表(且命名为:MLANGCONF),该表中含有两个字段:(被翻译表的)表名(TABLE_NAME),字段名(COLUMN_NAME),假定table1表中的column1字段需要翻译,那就向翻译配置表MLANGCONF中添加一条记录:
           字段:     TABLE_NAME         COLUMN_NAME
           数据:     table1               column1
     这张表中存储的就是需要翻译的表及被翻译的字段。
    2.备份翻译配置表(MLANGCONF)中存储的表,然后重命名为“表名_默认语言”作为副表
     例如1.中MLANGCONF存在一条记录,table1   column1,那就把table1备份一份,命名为“table1_chinese”(假如
     默认语言为中文),这样做的目的在于还原主表。
    3.再把翻译配置表MLANGCONF中有的表备份一份,重命名为“表名_语言”作为副表,
     例如2.中,只不过表名为:“table1_english”(这里假定只翻译为一种外语),把table1_english表中
     相应的数据翻译英文
      (这里相应的数据就是在翻译配置表MLANGCONF中存在的数据)
    4.这样真正从数据库中读取数据时还是从原表中读,当需要切换不同的语言时(如:table1_english),用相应语言表中的数
     据更新主表,注意:步骤3中,只翻译MLANGCONF表中存在的数据。如果主表中增加了一条记录,相应的副表中也应该添加。
    执行效率取决于,翻译配置表中记录的数量、和update语句的效率 。希望大家提出更多建议。
      

  3.   

    “这张表中存储的就是需要翻译的表及被翻译的字段。”
    ————————————————————————————————
    改为“这张表中存储的就是需要翻译的表名及被翻译的数据。”
    sorry书写有勿。翻译的是表中的数据,不是翻译字段。
      

  4.   

    1.首先可以将数据库设置为utf8 这种unique code 字符集,使得数据库可以满足任何字符编码的需要;2.对于数据库的设计,我想你应该首先明确需求是什么? 根据目前我接触到的一些系统,以及我的理解,我觉得
    需要提供多个语言数据的,也就是那些静态的,共同的语言显示部分吧,比如界面菜单,提示,报错等等。对于
    用户自己需要录入的数据,因为每个用户肯定会选择一个prefer language,所以就按照用户的喜好录入就可以了,这个地方不需要翻译。该用户后面查看自己的数据时也没什么问题(因为客户端字符集设置和界面语言应该没有变化的)。
    如果是这样的话,那么在某些表的字段上,添加一个标示语言的字段,对于同一个消息,分多语言要在该表中存放多行,分别对应各国语言。
    这样或许就够了吧。