我知道这个话题已经讨论了几次,但是没有一个代表我的最终解决方案。
情况
我正在设计一个关系mysql数据库,该数据库以后应该包含多语言内容。您可以从Wikipedia或Microsoft技术支持页面了解这一点。每种语言的内容应相同。例如,如果缺少翻译,则网站会为您提供自动翻译的相同内容或提供可用信息的语言。如果未设置某些值,则应回退到第二种或默认的浏览器语言或进行翻译。通过谷歌。开发环境是Zend。
我到目前为止的想法用于解决问题:
两个主键:(ID,语言)
优点:通过数据库抽象层轻松访问数据库。
问题:外键,关系船,后备
具有语言后缀的列:
优势:数据库性能,无关系问题。
问题:数据库抽象层无法处理此问题?
是否有任何概念得到证明或优于其他概念?有没有人创造过这样的东西并可以与我分享他的经验?在这种情况下是否存在经过修改的Zend DB Controller?您如何将此信息链接到表单?
感谢您的帮助,提示和建议!
亲切的问候,
曼努埃尔
请您参考如下方法:
第二个选项将不可维护(应在负号一侧添加)。要实际添加另一种语言,您需要修改表和抽象层。听起来像一场噩梦。
第一种选择似乎更有希望,但不幸的是,要使其发挥作用还有很多事情要做。但是,以我的经验来看,这是比较典型的解决方案,因此我不会重新发明轮子。
我要补充的是,语言回退应该在Zend方面进行,数据库会丢失一些信息。您可能会想到某种索引表来保存诸如内容的唯一ID和可用语言之类的信息。如果您需要提供服务,则可以阅读此类记录,将其与“接受语言”进行比较,然后再次要求数据库提供有效内容(使用最适合的语言)。唯一的问题是,您将需要以某种方式创建这样的索引表(我认为最好的方法是在将内容插入到内容表中时触发)。
大量的工作,但问题并不是太容易。