如何在plone 4实例的基础上覆盖翻译

时间:2011-06-16 03:41:37

标签: internationalization plone

我有一个zope实例,其中包含许多针对不同客户的plone网站。我希望覆盖特定的翻译,例如日期格式,仅针对单个plone站点而不影响其他站点。我该怎么做?

http://maurits.vanrees.org/weblog/archive/2010/10/i18n-plone-4#overriding-translations等教程似乎表明自定义翻译会覆盖zope实例上的所有网站。

2 个答案:

答案 0 :(得分:4)

这就是我解决它的方式。这是一个黑客解决方案,但它适用于我的特定情况。

根据http://maurits.vanrees.org/weblog/archive/2010/10/i18n-plone-4#overriding-translations

  • 创建了我自己的语言环境包。
  • 仅针对一种特定语言变体覆盖plonelocales域,在本例中为en_AU。
  • 通过buildout将软件包加载到zope中,特别注意确保它是第一个ZCML slug(博客文章中没有说明错误地说它必须是egg部分中的第一个软件包。这还不足以使它工作对我来说。
  • 对于每个网站我想切换日期格式我去了网站设置>语言并将语言切换为“英语(澳大利亚)”。

另一个问题是,在发布和部署您的语言环境包时,请确保您已

  • 首先生成.mo文件(如果你在本地运行zope就为你完成)
  • 并且你使用了一个MANIFEST.in文件来告诉setuptools包含所有.mo文件,因为你不应该在源代码管理下放置.mo文件,默认情况下setuptools只包含源代码控制下的文件。

这并没有为每个网站提供自定义日期格式,但如果您想要的自定义日期格式实际上是您选择使用的语言变体格式,则足够好。

答案 1 :(得分:3)

您可以实现自己的zope.i18n.interfaces.ITranslationDomain实用程序,该实用程序在不同的位置查找翻译。普通转换域实用程序存储gettext消息目录列表。这些是从文件系统上的mo文件加载并使用ZCML注册的。

但是您可以实现不同的翻译域,将其存储为每个站点的持久性实用程序,并为其提供一些额外的存储空间来查找消息。