如何实现多语言支持ERM

时间:2011-11-06 03:26:13

标签: sql multilingual

我想知道我的方法对于提供其内容的网站是否正确,该网站由CMS管理,使用不同的语言。

页面本身: 人们可以通过旅行指南预订路线。非常简单。现在公司需要以不同的语言向数据库添加路由。

我想,它基本上创建了路线,而且可以添加不同语言的描述。所以我基本上将路由的内容和标题存储在一个单独的表中,其中包含路由ID和语言代码。

你怎么看?

这是我在MySQL Workbench中的ERM图片。

http://imageshack.us/f/194/witchrouteerm.png/

是否有人有类似的项目,并认为这种方法会导致问题,或者您认为这是正确的方法?我真的不能想到一个不同的方式。因为我不想给路线添加额外的列,例如“lang_code”。因为我需要多次创建路线本身。这显然是可能的,但是在设置日期等方面更难以管理并且更耗时。

我期待从那些必须就多语言支持作出类似决定的人那里收到一些评论。

一切顺利, 理查德

1 个答案:

答案 0 :(得分:0)

分离语言特定描述是典型的。数据描述的“区域设置”应与用户的“区域设置”匹配。在ERD中,用户表上有两列(国家/地区和语言),但内容表上只有一列(lang_code)。你想让它们保持一致。转到两列,语言和国家/地区,并遵循标准。所有文本都需要分开(“难度”中的“标题”是否也需要特定于语言环境?)

标准将取决于您如何确定用户的区域设置(http Accept-Language标头?用户输入?)。区域设置可以是双字符语言代码(ISO 639)和双字符国家代码(ISO 3166)。所以,en_US,en_GB,en_CA,fr_CA,......

您可能希望强制执行业务规则,即路由必须始终存在美式英语语言描述。然后,您可以为用户提供首选语言的层次结构。例如,如果用户的偏好定义为葡萄牙巴西(pt_BR),但您没有相应的路线描述,则可以尝试使用葡萄牙语葡萄牙语(pt_PT),如果不存在,请恢复为英语US( EN_US)。通过将语言和国家/地区保持为两个单独的列,并引入另一个字段来标记语言组的默认描述(即,如果未找到其他变体,则标记pt_PT作为默认的pt语言),您可以使这些操作更容易一些表演。