我创建了一个schemaextender程序包,其中试图覆盖bikaplone域的某些字符串。我的新软件包的来源在这里:https://github.com/rockfruit/bika.uw.git

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


安装Plone的UnifiedInstaller。
修改“ eggs =”和“ develop =”行,使其包含“ bika.lims”和“ bika.uw”。
运行bin / buildout


使用这种安装方法,我的替代项不会被替代。在zope.i18n中,我看到translationdomain.py始终偏爱原始翻译,并且仅当原始bika目录中没有相同的字符串时(例如,对于使用Python或TAL代码翻译的邮件),才使用schemaextender程序包中的翻译。扩展包本身;在所有的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


我的问题是:我在做错什么,正常的和推荐的安装过程会阻止我的翻译覆盖优先考虑?

我很尴尬地承认,但是无论如何我都会:这困扰了我很多年。

我在下面粘贴了我现有的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会议上给出的talk列出的清单仍然准确。这是加载po文件的顺序:


语言环境= $ {buildout:directory} /语言环境
zcml = your.package
按字母顺序排列的产品,直到并包括Products.CMFPlone
在z3c.autoinclude中注册的软件包
其余产品
i18n文件夹(由PlacelessTranslationService完成)


您的情况:从zcml参数中删除Products.CMFPlone。它混合了订单。

10-07 18:30