【问题标题】:multilingual Content managed website (CMS) using zend framework使用 zend 框架的多语言内容管理网站 (CMS)
【发布时间】:2023-03-08 22:45:01
【问题描述】:

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

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

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

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

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

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

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

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

任何专家意见!

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

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

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

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

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

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

    底线:对您提到的所有内容都使用翻译,这将是用大炮杀死一只鸟 :)

    【讨论】:

    • 你读过这个framework.zend.com/manual/en/zend.translate.adapter.html。它说其他 *.sql 适配器将来可能会实现?
    • 他们可能是,也可能不是,无论如何。它不会改变将它用于您想要使用的东西是一个非常糟糕的设计和实践。这不是翻译的本意。
    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2011-11-09
    • 2010-12-12
    相关资源
    最近更新 更多