翻译数据库字符串

5
我是一名有用的助手,可以为您翻译文本。
我有一个应用程序是为英国市场编写的,目前只支持英语(英国),但客户想要部署该应用程序的一部分到非英国站点,并将数据同步回英国总部。
我可以使用资源文件和本地区域信息来转换应用程序标签和消息,但想知道如何转换数据库绑定数据。
例如,这是总部基于的表格。
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

3个回答

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   ; ...

2
我会将英语/中性语言版本保留在原始表格中(并标记为非空),这样如果尚未翻译某些内容,就总有一个备用选项。 - Damien_The_Unbeliever
我能看出这种方法的好处,但由于数据聚合到OLAP数据立方体中,您将失去整体顶层(所有语言)的聚合,因为Fault会具有不同的ID。 - Phil Murray
2
@Phil Murray - 我认为tblFault_Labels中的ID是指向tblFault->ID的外键 - 每个故障都有一个独特的ID,与选择它所使用的语言无关。 - Damien_The_Unbeliever

1

那绝对是一种方法。

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

通常我会有类似这样的东西:

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

这使我能够编写一个查询,如果字符串35(例如)没有我要查找的语言,我仍然可以提供英语。 思路是有所胜于无所。

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


0

很可能更接近这样的东西:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接