8

尽管我发现了相当多的与此问题相关的资源,但他们都没有精确地给出使用Zend Framework的多语言CMS的答案。使用zend框架的多语言内容托管网站(CMS)

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

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

我们将如何处理数据库驱动的多语种网站?以前,我们习惯于使用php,并使用精心设计的多语言数据库,并将每篇文章(页面)保留在表格中,并提供所有必需的翻译。如果我们将通过使用zend框架来做同样的事情,那么是否会过度杀死或放慢网站?我们仍然使用zend缓存使其更快,但我们无法利用zend翻译。后来,当用于sql的zend翻译适配器将可用时,使用zend翻译可以轻松切换多语言内容管理系统。

有没有人试过吗?什么可能是优点和玉米?

另一种解决方案可能是让我们的设计良好的多语言数据库,并在管理区使用GUI的每个变更admin上生成基于xml的语言文件。然后使用Zend翻译适配器来处理这些XML文件。我想这可能是矫枉过正,用大炮杀死一只鸟:)

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

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

有没有专家意见!

回答

1

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

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

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

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

我认为你有点误 - 我知道你想使用翻译为您的网页(文章)的动态内容。翻译的目的是将视图国际化 - 静态内容。我的意思是一样的东西登录寄存器欢迎文本等,而且这些真应该在文件中(考虑文件静态缓存),而不是在数据库中,因为巨大的负荷的它将使(DB应无论如何都要缓存)。存储在数据库中的文章是一个不同的东西,你想实现的是多语言页面内容。您可以轻松处理,无需翻译(请记住,翻译对于视图来说很好!),只需在表格中添加国家/语言标志并通过您的模型检索合适的(过滤给定语言)数据即可。它非常简单,并且不需要任何后端进行翻译。

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

另一种解决方案可以使我们的设计以及多语言数据库,并产生对每一个变化管理的基于XML的语言文件使管理区使用GUI。然后使用Zend翻译适配器来处理这些XML文件。我想这可能是矫枉过正,造成了鸟儿大炮:)

如果谈论的翻译静态内容 - 这真的是很常见的解决方案:保留在数据库中的翻译方便地访问/修改和生成XML/CSV /发生更改时的任何文件。

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

它可能会处理好,但仍然在考虑动态内容。静态内容应该在视图内格式化。所以,我想是死路一条。

底线:使用转换为所有你提到的,那就可以查杀鸟用大炮:)

+1

你读这http://framework.zend.com/manual/en/zend。 translate.adapter.html。它说其他* .sql适配器可能在未来实现? – Developer

+0

他们可能是或者他们可能不是,无论如何。它不会改变,使用它为你想要使用的是一个非常糟糕的设计和实践。这不是翻译的意思。 – jacek