MySQL驱动的多语言网站的表格架构

时间:2011-12-24 17:09:19

标签: php mysql multilingual

我正在开发多个网站。尝试为此目的设计最佳的数据库模式。

enter image description here

如您所见,有两个表:langsmenu我的想法是:

对于前。让我们来看看MySQL表中的多语言导航生成。在PHP后端,同时从数据库生成导航

  • menu表格行
  • 获取所有数据
  • 左连接第二个表 - langsname表的menu字段) 并从定义语言的列中获取数据(例如,en,ru)

您如何看待,是最佳方式,还是更有效的解决方案?请给我数据库相关的答案,而不是文件。 (例如,gettext,......等)

2 个答案:

答案 0 :(得分:1)

如果langs表包含language列,每个翻译都有一行,那会更好。这允许您稍后添加另一种语言,只需要应用数据更改(而不必重新编写查询)。

正如您已经暗示的那样,执行左连接并回退到直接在menus表中保存的默认语言也是一个好主意(在这种情况下,您不需要保留翻译例如en表中的langs,因为英文版本将始终可用。“

您可能还需要考虑存储针对特定国家/地区的翻译(例如,如果有多个西班牙语国家/地区的翻译可能不同),并遵循后备策略:language-country,{{1 },language翻译。

答案 1 :(得分:1)

您可以进一步规范化:

  • tokenname:id,token(例如,(1,program),(2,menu))
  • 本地化:id, tokenname_id,lang,text

引用字符串的表然后通过tokenname.id将字符串引用为外键。

请注意,您需要某种迷你模板语言才能进行文本本地化。