多语言表设计问题

时间:2011-01-19 16:25:46

标签: database database-design schema multilingual

我对这个基本的multilang设计有一个实现问题。

表格内容

content_id bigint(20) NOT NULL,  
lang_id int(5) NOT NULL,   
word varchar (500) NOT NULL,  
created datatime,  

现在问题在于实施这个问题。我假设在应用程序中我声明页面上的每个单词都有content_id,如1,2,3,4,5 ......其中1 =“Hello”2 =“欢迎来到xxxxx”等等吗?所以问题是我在代码中给出“Hello”= 1。所以在表中就是这样的 1,23(英语),你好。

但是现在如果我有一个西班牙语会话,我怎么会在表中找到“你好”?因为我在代码中硬编码1为“Hello”所以系统将始终查找它并找到英文文本。我看到的唯一工作是每种语言都有单独的表格吗?

1 个答案:

答案 0 :(得分:1)

您需要将lang_id和content_id设为复合主键。您最终会得到如下数据:

1         Hello            1
1         Hola             2
2         Thanks           1
2         Gracias          2
2         Danke            3

您甚至可能希望将英语翻译分成一个单独的表格,以便您作为开发人员更容易(因为您会说英语)...然后您知道WordId 1是规范地“Hello”。显然是语言表的外键。如果这样做,您可能还需要主键的代理键...这样可以简化更新。