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

Php 使用zend框架的多语言内容管理网站(CMS),php,mysql,zend-framework,content-management-system,multilingual,Php,Mysql,Zend Framework,Content Management System,Multilingual,虽然我发现了很多与这个问题相关的资源,但是没有一个能够准确地给出使用Zend框架的多语言CMS的答案 zend framwork中有许多z可用。但数据库(mysql)驱动的网站最需要的一个(zend sql adapter)尚未发布 对于那些非数据库驱动的多语言网站,可以将内容放在文件(xml、mo或任何其他)中,并使用zend translate适配器之一处理内容以显示正确的语言 我们将如何处理数据库驱动的多语言网站?以前,我们习惯于将php与精心设计的多语言数据库结合使用,将每一篇文章(页面

虽然我发现了很多与这个问题相关的资源,但是没有一个能够准确地给出使用Zend框架的多语言CMS的答案

zend framwork中有许多z可用。但数据库(mysql)驱动的网站最需要的一个(zend sql adapter)尚未发布

对于那些非数据库驱动的多语言网站,可以将内容放在文件(xml、mo或任何其他)中,并使用zend translate适配器之一处理内容以显示正确的语言

我们将如何处理数据库驱动的多语言网站?以前,我们习惯于将php与精心设计的多语言数据库结合使用,将每一篇文章(页面)保存在表中,并进行每一次必要的翻译。如果我们使用zend框架来做同样的事情,那会是过度杀戮还是网站变慢?我们仍然使用zend缓存来提高速度,但我们无法利用zend translate的优势。稍后,当zend translate adapter for sql可用时,使用zend translate切换多语言内容管理系统是否容易

有人试过这个吗?它的优点和优点是什么

另一个解决方案是保持我们设计良好的多语言数据库,并在管理区域中使用GUI在每次管理更改时生成基于xml的语言文件。然后使用zend translate适配器之一来处理这些xml文件。我想用大炮杀死一只鸟未免太过分了:)

当我谈论将整个页面的内容放入数据库时。它可以包括一些html标记,如b、span、br、p等。zend translate如何处理其中html标记的内容

如果之前有人已经实现了这一点,那么使用zend框架处理多语言内容管理网站的最佳方法是什么

任何专家意见

zend framwork中有许多zend translate适配器可用。但数据库(mysql)驱动的网站最需要的一个(zend sql adapter)尚未发布

对于那些非数据库驱动的多语言网站,可以将内容放在文件(xml、mo或任何其他)中,并使用zend translate适配器之一处理内容以显示正确的语言

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

我们将如何处理数据库驱动的多语言网站?以前,我们习惯于将php与精心设计的多语言数据库结合使用,将每一篇文章(页面)保存在表中,并进行每一次必要的翻译

我认为您有点搞错了-我知道您希望使用Translate来处理页面(文章)的动态内容。Translate的设计目的是将视图(静态内容)国际化。我指的是登录、注册或欢迎文本等内容,这些内容确实应该在文件中(将文件视为静态缓存)而不是在数据库中,因为这样会产生巨大的负载(无论如何都应该缓存数据库)。数据库中存储的文章是另一回事,您想要实现的是多语言页面内容。不需要翻译(记住,翻译对视图有好处!),只需在表中添加国家/语言标志,并通过模型检索合适的(针对给定语言过滤的)数据即可轻松处理。它非常简单,不需要任何后端进行翻译

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

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

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

当我谈到将整个页面的内容放入数据库时,它可以包括一些html标记,如b、span、br、p等。zend translate如何处理其中的html标记内容

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


一句话:使用Translate对您提到的所有内容进行翻译,就像用大炮杀死一只鸟:)

您读过这篇文章吗。它说将来可能会实现其他*.sql适配器?它们可能是,也可能不是,不管怎样。这并没有改变,将它用于你想要使用的东西是一个非常糟糕的设计和实践。这不是翻译的本意。