使用zend框架的多语言内容管理网站(CMS)

时间:2011-08-01 09:30:32

标签: php mysql zend-framework content-management-system multilingual

虽然我找到了很多与此问题相关的资源,但它们都没有使用Zend Framework正确地给出多语言CMS的答案。

zend framwork中有很多z end translate adapters。但是最需要数据库(mysql)驱动的网站的那个(zend sql adapter)还没有发布。

对于那些不是数据库驱动的多语言网站,内容可以放在文件中(xml,mo或任何其他),其中一个zend翻译适配器用于处理内容以显示正确的语言。

我们将如何处理数据库驱动的多语言网站?以前我们习惯使用php设计精良的多语言数据库,将每篇文章(页面)保存在表格中,并包含所有必需的翻译。如果我们通过使用zend框架来做同样的事情,那会是过度杀戮还是慢速网站?我们仍然使用zend缓存来加快速度,但我们无法利用zend translate。稍后,当用于sql的zend翻译适配器可用时,通过使用zend translate可以很容易地切换多语言内容管理系统。

有人试过吗?什么可能是职业选手和玉米?

另一个解决方案可能是保持我们精心设计的多语言数据库,并在管理区域中使用GUI在每个更改管理员生成基于xml的语言文件。然后使用zend translate adapter之一来处理这些xml文件。我想这可能是矫枉过正的,用大炮杀死一只鸟:)

当我谈论将整个页面的内容放在数据库中时。它可以包含一些html标签,如b,span,br,p等.zend翻译可以在内容中使用html标签进行处理吗?

如果某人之前已经实现了此功能,那么使用zend框架处理多语言内容管理网站的最佳方式可能是什么。

任何专家意见!

1 个答案:

答案 0 :(得分:1)

  

zend framwork中有许多zend翻译适配器。但是最需要数据库(mysql)驱动的网站的那个(zend sql adapter)还没有发布。

     

对于那些不是数据库驱动的多语言网站,内容可以放在文件中(xml,mo或任何其他),其中一个zend翻译适配器用于处理内容以显示正确的语言。

这些都是错误的假设。不是说,DB驱动的应用程序需要使用DB驱动的翻译系统。您可以轻松使用静态文件系统。

  

我们将如何处理数据库驱动的多语言网站?以前我们习惯使用PHP设计精良的多语种数据库,将每篇文章(页面)保存在表格中,并附上所有必需的翻译。

我认为您有点误 - 我知道您希望使用翻译来获取页面的动态内容(文章)。翻译的目的是使视图国际化 - 静态内容。我的意思是像登录注册欢迎文本等等。这些确实应该在文件中(考虑文件是静态缓存)而不是比在DB中,因为它会产生巨大的负载(无论如何都应该缓存DB)。存储在数据库中的文章是另一回事,您想要实现的是多语言页面内容。您可以轻松处理,无需翻译(请记住,翻译适用于视图!),只需在表格中添加国家/语言标记,并通过模型检索合适的(按给定语言过滤)数据。它非常简单,不需要任何翻译后端。

我不确定Translate是如何工作的,但我可以假设它检查语言然后加载整个翻译文件并将其作为集合(或简单的关联数组)存储在脚本内存中,以提供快速而强大的翻译机制(注意,它不需要为每个给定的密钥调用DB或文件,因为它们都将在内存中)。保持整个页面,这样的文章根本没有意义,主要是因为你每页只需要1-2篇文章(为什么浪费内存呢?)有时会有数百个本地化的视图字符串(所以你不想为每个人调用数据库或文件)

  

另一个解决方案可能是保持我们精心设计的多语言数据库,并在管理区域中使用GUI在每个更改管理员生成基于xml的语言文件。然后使用zend translate adapter之一来处理这些xml文件。我想这可能是矫枉过正的,用大炮杀死一只鸟:)

如果谈论静态内容的翻译 - 它确实是非常常见的解决方案:将翻译保存在数据库中以便于访问/更改,并在发生更改时生成XML / CSV /任何文件。

  

当我谈论将整个页面的内容放在数据库中时。它可以包含一些html标签,如b,span,br,p等.zend翻译可以在内容中使用html标签进行处理吗?

这可能会很好,但你仍然在考虑动态内容。应在视图内格式化静态内容。所以,我想死路一条。

结论:对于你提到的所有内容,使用翻译,就会用大炮杀死一只鸟:)