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


multilingual Content managed website (CMS) using zend framework

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

在zend框架中有许多可用的zend翻译适配器。但是一个(zend sql适配器),这是最需要的数据库(mysql)驱动的网站,尚未发布。

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

我们将如何处理数据库驱动的多语言网站?以前,我们习惯使用php和精心设计的多语言数据库,将每篇文章(页面)保存在表中,并提供每个需要的翻译。如果我们将使用zend框架做同样的事情,那将是过度杀戮或缓慢的网站吗?我们仍然使用zend缓存使其更快,但我们无法利用zend翻译的优势。稍后,当sql的zend translate适配器可用时,通过使用zend translate切换多语言内容管理系统是否容易?

有人试过吗?优点和缺点是什么?

另一个解决方案可以保持我们良好的设计多语言数据库和生成基于xml的语言文件的每一个变化管理员使用GUI在管理区域。然后使用其中一个翻译适配器来处理这些xml文件。我想这可能太过分了,用大炮打死一只鸟:)

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

如果有人已经实现了这个之前,什么可能是最好的方法来处理多语言内容管理网站使用zend框架。

有什么专家意见吗?

在zend框架中有许多可用的zend翻译适配器。但是一个(zend sql适配器),这是最需要的数据库(mysql)驱动的网站,还没有发布。

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

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

我们将如何处理数据库驱动的多语言网站?以前,我们习惯使用php和设计良好的多语言数据库,将每篇文章(页面)保存在表中,并提供每个需要的翻译。

我认为你有一点错——我理解你想用翻译你的页面(文章)的动态内容。Translate的设计目的是使视图——静态内容——国际化。我指的是像loginregisterwelcome text等。这些应该放在文件中(考虑文件是静态缓存),而不是放在数据库中,因为它会产生巨大的负载(无论如何都应该缓存DB)。存储在数据库中的文章是另一回事,您想要实现的是多语言页面内容。您可以轻松地处理这个问题,而不需要Translate(记住,Translate对视图很有用!),只需将国家/语言标志添加到表中,并通过模型检索合适的(针对给定语言过滤的)数据。它真的很简单,不需要任何后端进行翻译。

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

另一个解决方案可以保持我们良好的设计多语言数据库和生成基于xml的语言文件的每一个变化管理员使用GUI在管理区域。然后使用其中一个翻译适配器来处理这些xml文件。我想这可能太过分了,用大炮打死一只鸟:)

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

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

这可能会处理得很好,但是,你仍然在考虑动态内容。静态内容应该在视图内进行格式化。所以,我猜这是死胡同。

底线:对于你提到的所有翻译来说,这将是用大炮杀死一只鸟:)