gpt4 book ai didi

plone - *.zcml 文件是否被 i18n 明智地解析?

转载 作者:行者123 更新时间:2023-12-01 07:11:25 25 4
gpt4 key购买 nike

我已经命名了实用程序,并希望标记名称以供以后使用 i18n。这是正确的方法吗?

<utility
name="Home"
i18n:attributes="name"
provides=".interfaces..."
factory=".shortcut...." />

最佳答案

实用程序的名称不是可翻译的消息 ID,而是内部技术 ID。您不能将其用于翻译目的。

如果您查看 zope.component.zcml ,您可以看到该指令的接口(interface),其中包含:

class IUtilityDirective(IBasicComponentInformation):
"""Register a utility."""

name = zope.schema.TextLine(
title=_("Name"),
description=_("Name of the registration. This is used by"
" application code when locating a utility."),
required=False)

例如,如果您查看 http://wiki.zope.org/zope3/zcml.html它会告诉你一个属性需要是 MessageID 类型才能在 ZCML 中翻译。

如果您有一个带有 MessageID 类型属性的 ZCML 指令,您需要做的就是为 ZCML 文件定义一个 i18n:domain。 ZCML 机器知道哪些属性是可以翻译的,因为它们是正确的类型。所以你不需要任何额外的标记来记录你在 TAL 中需要的任何属性。

话虽如此,如果您在 Plone 中工作并使用 i18ndude 提取消息,它不会从 ZCML 文件中提取任何消息 - 仅仅是因为 ZCML 中没有定义一条消息,实际上它也显示在 Plone UI 的任何地方。

如果您有实用程序并希望给它们提供可翻译的名称,请给它们一个标题属性,例如:
from zope.i18nmessageid import MessageFactory
_ = MessageFactory('mydomain')

class MyShortCut(object):

title = _('My shortcut')

并在 UI 中使用 title 属性。

关于plone - *.zcml 文件是否被 i18n 明智地解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6899708/

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