草庐IT

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

coder 2023-10-02 原文

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

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

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

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

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

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

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

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

任何专家意见!

最佳答案

There are many zend translate adapters available in zend framwork. But the one (zend sql adapter), which is most need for database(mysql) driven websites, is not yet released.

For those multilingual websites, which are not database driven, contents can be placed in files (xml, mo, or any other) and one of the zend translate adapter is used to process the contents to display the correct language.

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

How we will deal with database driven multilingual website? Previously we were habit of using php with well-designed multilingual database keeping each article (page) in table with every required translation.

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

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

Another solution could be keeping our well design multilingual database and generate xml based language files on every change admin make using GUI in admin area. And then use one of zend translate adapter to handle these xml files. I guess that could be overkill, killing a bird with cannon :)

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

When I am talking about placing the whole page's content in database. It can include some html tags such as b, span, br, p etc. How well the zend translate can deal contents with html tags in it?

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

底线:对您提到的所有内容使用翻译,无异于用大炮杀死一只鸟 :)

关于php - 使用 zend 框架的多语言内容管理网站 (CMS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6896507/

有关php - 使用 zend 框架的多语言内容管理网站 (CMS)的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  8. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  9. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  10. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

随机推荐