.net 翻译数据库字符串

.net 翻译数据库字符串,.net,sql,vb.net,translation,globalization,.net,Sql,Vb.net,Translation,Globalization,我有一个为英国市场编写的应用程序,目前只支持英语(英国),客户希望将部分应用程序部署到非英国站点,并将数据同步回英国总部 我可以使用资源文件和本地区域性信息转换应用程序标签和消息,但不知道如何转换数据库绑定数据 例如。 这是总部的表格 tblFault ID ; Description 1 ; Not Functional 2 ; Build Fault 3 ; Leak 4 ; Aesthetics 5 ; Testing 如果我要将数据翻译成非英国语言,我可以替换描述,但如果数据不同步,这

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

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

例如。 这是总部的表格

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        ;               ;
你推荐什么方法

谢谢


Phil

由于故障及其描述之间存在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   ; ...

更有可能的是:

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

这绝对是一种方法

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

通常我会有这样的东西:

StringId,  LanguageId,    Description
1            0              Hello
1            1              Hola
1            2              Bon Jour
这允许我编写一个查询,如果字符串35(例如)没有我要找的语言,我仍然可以提供英语。有总比没有好的想法


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

我会将英语/中性语言版本保留在原始表中(并标记为NOTNULL)因此,如果某些东西还没有被翻译,总是会有退路。我可以看到这种方法的好处,但当数据聚合到OLAP datacube中时,您将失去总体顶层(所有语言)作为故障的聚合将具有不同的ID's@PhilMurray-我认为其意图是
tblFault\u标签中的
ID
是一个FK to
tblFault->ID
-每个故障都有一个唯一的
ID
,与选择它的语言无关。