gpt4 book ai didi

internationalization - i18n 消息 : precedence of messages from multiple PO files

转载 作者:行者123 更新时间:2023-12-04 08:21:12 26 4
gpt4 key购买 nike

我创建了一个 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 目录中没有相同字符串时才使用 schemaextender 包中的那些(即,对于在扩展包本身的 Python 或 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

我的问题是:我做错了什么,正常和推荐的安装过程阻止我的翻译覆盖获得其应有的优先权?

我不好意思承认,但无论如何我都会:这让我困惑了

我在下面粘贴了我现有的 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

最佳答案

我认为我为 talk 制作的列表我在 2012 年的 Arnhem Plone session 上给出的仍然准确。这是加载 po 文件的顺序:

  1. locales = ${buildout:directory}/locales
  2. zcml = 你的.package
  3. 产品按字母顺序排列,直到并包括 Products.CMFPlone
  4. 使用 z3c.autoinclude 注册的包
  5. 其他产品
  6. i18n 文件夹(由 PlacelessTranslationService 完成)

在您的情况下:从 zcml 参数中删除 Products.CMFPlone。它混淆了顺序。

关于internationalization - i18n 消息 : precedence of messages from multiple PO files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30077517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com