I18N消息:来自多个PO文件的消息的优先级



我创建了一个schemextender软件包,其中我正在尝试覆盖bikaplone域的某些字符串。我的新软件包的来源是:https://github.com/rockfruit/bika.uw.git

我推荐和使用的安装方法(对于所有plone插件/实例)是:

  • 安装Plone的unifiedInstaller。
  • 修改'eggs ='和'develop ='线,包括" bika.lims"one_answers" bika.uw"。
  • 运行bin/buildout

使用这种安装方法,我的覆盖物并没有覆盖。在zope.i18n中,我看到TranslationDomain.py总是更喜欢原始翻译,并且仅在原始bika目录中没有相同的字符串时仅使用ScheMextender软件包中的翻译(即,对于python或TAL代码中的消息或扩展的TAL代码,软件包本身;在所有Bika或Plone代码中,我的新目录被忽略)。

我已经读到buildout.cfg中的ZCML =截面可用于强制ZCML加载顺序更改,从而导致消息是从较早的加载软件包中首选的。因此,我尝试按照以下修改进行修改,但是bika.lims的目录仍然是首选:

zcml =
    Products.CMFPlone
    bika.uw
    bika.lims

现在,这是我找到的线索。我链接到上面的github存储库在根上有一个buildout.cfg,它不使用unifiedInstaller,而是直接下载plone和其他依赖关系。它不包含zcml =线。但是(对我来说)使用此安装方法时(对我来说)的翻译覆盖了两个域的工作(就像购买的域一样!):

git clone https://github.com/rockfruit/bika.uw.git
cd bika.uw
virtualenv .
./bin/pip install zc.buildout
bin/buildout
bin/zeoserver fg &  # no idea why 'start' does not work
bin/zeoclient fg

我的问题是:我做错了什么,正常和推荐的安装程序可防止我的翻译替代其正当优先级?

我很尴尬地承认,但无论如何我都会:这让我感到困惑,因为 em>

我在下面粘贴了我现有的buildout.cfg,今天早上,我试图模仿bika.uw.git/buildout.cfg文件的行为,没有成功。


[buildout]
# buildout-original.cfg is the Plone 4.3.4 zeocluster unified-installer file.
extends =
    buildout-original.cfg
zeo-address = 8081
client1-address = 8085
client2-address = 8086
effective-user = campbell
buildout-user = campbell
user=admin:adminsecret
need-sudo = no
var-dir=${buildout:directory}/var
backups-dir=${buildout:directory}/backups
deprecation-warnings = on
verbose-security = on
eggs =
    bika.uw
    bika.lims
    pudb
    i18ndude
    test
    robot
    zest.releaser
develop +=
    /home/campbell/Plone/repos/bika.uw
    /home/campbell/Plone/repos/bika.lims
parts =
    zeoserver
    client1
    client2
    backup
    zopepy
    unifiedinstaller
zcml =
[zeoserver]
<= zeoserver_base
recipe = plone.recipe.zeoserver
zeo-address = 127.0.0.1:${buildout:zeo-address}
zserver-threads = 1
[client1]
<= client_base
recipe = plone.recipe.zope2instance
zeo-address = ${zeoserver:zeo-address}
http-address = ${buildout:client1-address}
resources = ${buildout:directory}/resources
locales = ${buildout:directory}/locales
[client2]
<= client_base
recipe = plone.recipe.zope2instance
zeo-address = ${zeoserver:zeo-address}
http-address = ${buildout:client2-address}
resources = ${buildout:directory}/resources
locales = ${buildout:directory}/locales
[versions]
Cheetah = 2.2.1
plone.recipe.command = 1.1
plone.recipe.precompiler = 0.6
plone.recipe.unifiedinstaller = 4.3.1
Products.DocFinderTab = 1.0.5
ZopeSkel = 2.21.2
collective.recipe.backup = 2.14
zopeskel.dexterity = 1.5.3
zopeskekel.dexterity = 1.5.3
zopeskel.diazotheme = 1.1

我认为我在2012年在Arnhem Plone会议上进行的演讲的清单仍然准确。这是PO文件加载的顺序:

  1. locales = $ {buildout:directory}/locales
  2. zcml = your.package
  3. 按字母顺序排列的产品,直到products.cmfplone
  4. 在z3c.autoinclude
  5. 的软件包
  6. 其余产品
  7. I18N文件夹(由PlopelessTranslationservice完成)

在您的情况下:从zcml参数中删除products.cmfplone。它混合了订单。

最新更新