2011-11-06 73 views
1

我想知道,如果我的方法对于由CMS以不同语言管理的网站提供内容,是否正确。如何实现多语言支持ERM

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

我想,它基本上创建了路线,并且可以用不同的语言添加描述。因此,我基本上将路线的内容和标题存储在具有路线标识和语言代码的单独表格中。

您认为如何?

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

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

有没有人有类似的项目,并认为这种做法将导致一个问题,或者你认为它是正确的方法是什么?我无法真正想到另一种方式。因为我不想给路由添加诸如“lang_code”之类的列。因为我不想多次创建路线本身。这显然是可能的,但更难以管理,并且在设置日期等方面耗费更多时间。

我期待在这里接受一些人的意见,他们必须作出有关多语言支持的类似决定。

一切顺利, 理查德

回答

0

分离的语言具体说明将是典型的。数据描述的“locale”应该与用户的“locale”匹配。在您的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语言),您可以使这些操作更容易一些去表演。