zend-framework - 如何使用Zend,l18n mysql为多语言数据库建模?

标签 zend-framework internationalization zend-db zend-db-table zend-locale

我知道这个话题已经讨论了几次,但是没有一个代表我的最终解决方案。

情况
我正在设计一个关系mysql数据库,该数据库以后应该包含多语言内容。您可以从Wikipedia或Microsoft技术支持页面了解这一点。每种语言的内容应相同。例如,如果缺少翻译,则网站会为您提供自动翻译的相同内容或提供可用信息的语言。如果未设置某些值,则应回退到第二种或默认的浏览器语言或进行翻译。通过谷歌。开发环境是Zend。

我到目前为止的想法用于解决问题:

两个主键:(ID,语言)
优点:通过数据库抽象层轻松访问数据库。
问题:外键,关系船,后备

具有语言后缀的列:
优势:数据库性能,无关系问题。
问题:数据库抽象层无法处理此问题?

是否有任何概念得到证明或优于其他概念?有没有人创造过这样的东西并可以与我分享他的经验?在这种情况下是否存在经过修改的Zend DB Controller?您如何将此信息链接到表单?

感谢您的帮助,提示和建议!

亲切的问候,

曼努埃尔

最佳答案

第二个选项将不可维护(应在负号一侧添加)。要实际添加另一种语言,您需要修改表抽象层。听起来像一场噩梦。

第一种选择似乎更有希望,但不幸的是,要使其发挥作用还有很多事情要做。但是,以我的经验来看,这是比较典型的解决方案,因此我不会重新发明轮子。
我要补充的是,语言回退应该在Zend方面进行,数据库会丢失一些信息。您可能会想到某种索引表来保存诸如内容的唯一ID和可用语言之类的信息。如果您需要提供服务,则可以阅读此类记录,将其与“接受语言”进行比较,然后再次要求数据库提供有效内容(使用最适合的语言)。唯一的问题是,您将需要以某种方式创建这样的索引表(我认为最好的方法是在将内容插入到内容表中时触发)。

大量的工作,但问题并不是太容易。

关于zend-framework - 如何使用Zend,l18n mysql为多语言数据库建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6592948/

相关文章:

zend-framework - 自定义验证器在 Zend 中不起作用

zend-framework - Zend 单选元素装饰器

objective-c - 如何国际化 iPhone 应用程序

java - Hibernate validator 中的国际化

php - 如何在 zend 框架 2 中返回一个对象数组?

PHPUnit 和 ZF2 服务

php - mysql中的外键引用问题

zend-framework - 如何在zend框架中使用phpexcel

ruby-on-rails - NoMethodError:Psych:Module (I18n::InvalidLocaleData) 的未定义方法 `unsafe_load'

php - 使用\Zend_Db_Table_Abstract::find($id)。 MySQL SET 字段返回字符串而不是(想要的)int