Dev*_*per 8 php mysql multilingual zend-framework content-management-system
虽然我找到了很多与此问题相关的资源,但它们都没有使用Zend Framework正确地给出多语言CMS的答案.
zend framwork中有许多z end translate适配器.但是最需要数据库(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框架处理多语言内容管理网站的最佳方式可能是什么.
任何专家意见!
zend 框架中有许多可用的 zend 翻译适配器。但是数据库(mysql)驱动的网站最需要的一个(zend sql适配器)尚未发布。
对于那些非数据库驱动的多语言网站,内容可以放置在文件(xml、mo 或任何其他文件)中,并使用 zend 翻译适配器之一来处理内容以显示正确的语言。
这些都是错误的假设。并不是说数据库驱动的应用程序需要使用数据库驱动的翻译系统。您可以轻松使用静态文件系统。
我们将如何处理数据库驱动的多语言网站?以前我们习惯使用 php 和精心设计的多语言数据库,将每篇文章(页面)与每个所需的翻译保存在表格中。
我认为您有点错误 - 我知道您想使用翻译来翻译页面(文章)的动态内容。Translate 的设计目的是使视图(静态内容)国际化。我的意思是登录或注册或欢迎文本等。这些确实应该在文件中(将文件视为静态缓存)而不是在数据库中,因为它会产生巨大的负载(无论如何数据库都应该被缓存)。存储在DB中的文章是另一回事,你想要实现的是多语言页面内容。您可以在没有翻译的情况下轻松处理该问题(请记住,翻译对视图有好处!),只需向表中添加国家/语言标志并通过模型检索合适的(针对给定语言过滤的)数据。它非常简单,不需要任何后端进行翻译。
我不确定 Translate 是如何工作的,但我可以假设它会检查语言,然后加载整个翻译文件并将其作为集合(或简单的关联数组)存储在脚本内存中,只是为了提供快速而强大的翻译机制(注意,它不需要为每个给定的键调用数据库或文件,因为它们都在内存中)。以这种方式保留整个页面、文章根本没有意义,主要是因为每页只需要 1-2 篇文章(那为什么要浪费内存?),有时还需要数百个本地化视图字符串(所以您不想为每个对象调用数据库或文件)
另一个解决方案是保留我们精心设计的多语言数据库,并在管理区域中使用 GUI 进行每次更改时生成基于 xml 的语言文件。然后使用 zend 翻译适配器之一来处理这些 xml 文件。我想这可能有点过分了,用大炮杀死一只鸟:)
如果谈论静态内容的翻译 - 这确实是非常常见的解决方案:将翻译保留在数据库中以便于访问/更改,并在发生更改时生成 XML/CSV/任何文件。
当我谈论将整个页面的内容放入数据库时。它可以包含一些 html 标签,例如 b、span、br、p 等。zend 翻译如何处理其中包含 html 标签的内容?
这可能会很好,但你仍然在考虑动态内容。静态内容应在视图内格式化。所以,我猜是死路一条。
底线:使用翻译来完成您提到的所有内容,这就像用大炮杀死一只鸟:)