翻译数据库字符串

时间:2011-06-14 13:33:11

标签: .net sql vb.net translation globalization

我有一个为英国市场编写的应用程序,目前只支持英语(英国),客户希望将部分应用程序部署到非英国站点,并将数据同步到英国总部。

我可以使用资源文件和本地文化信息转换应用程序标签和消息,但是想知道如何转换数据库绑定数据。

E.G。 这是基于总部的表

tblFault
ID ; Description
1 ; Not Functional
2 ; Build Fault
3 ; Leak
4 ; Aesthetics
5 ; Testing

如果我要将数据翻译成非英国语言,我可以直接替换描述但如果数据未经同步则会导致一些问题?

我是否应该使用其他列扩展表以获取其他语言,然后使用本地文化更改选择?

tblFault
ID ; Description-EN ; Descrption-US ; Description-DE etc
1  ; Not Functional ;               ;
2  ; Build Fault    ;               ;
3  ; Leak           ;               ;
4  ; Aesthetics     ;               ;
5  ; Testing        ;               ;

你会推荐什么方法?

由于

菲尔

3 个答案:

答案 0 :(得分:5)

由于故障与其描述之间存在1:n关系,因此最干净的解决方案是创建子表:

tblFault
--------

FaultID ; some other fields
      1 ; ...
      2 ; ...
      3 ; ...
      4 ; ...
      5 ; ...


tblFault_Description
--------------------

FaultID ; lang ; Description
      1 ; en   ; Not Functional
      1 ; de   ; Funktioniert nicht
      2 ; en   ; ...

答案 1 :(得分:1)

这绝对是一种方法。

我之前在这种情况下使用的另一种方法是创建“LanguageId”列。

通常我会有这样的事情:

StringId,  LanguageId,    Description
1            0              Hello
1            1              Hola
1            2              Bon Jour

这允许我写一个查询,如果字符串35(例如)没有我正在寻找的语言,我仍然可以提供英语。认为事情总比没有好。

这种方法的缺点是复合主键和一些连接逻辑。

答案 2 :(得分:0)

更像是这样的东西,很有可能:

tblFault
ID ; Lang ; Description
1  ; EN   ; Not Functional
...