首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >i18n会解析*.zcml文件吗?

i18n会解析*.zcml文件吗?
EN

Stack Overflow用户
提问于 2011-08-01 22:13:12
回答 2查看 483关注 0票数 3

我已经命名了实用程序,并希望标记名称以便以后使用i18n。这条路对吗?

代码语言:javascript
复制
<utility
  name="Home"
  i18n:attributes="name"
  provides=".interfaces..."
  factory=".shortcut...." />
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-01 23:11:57

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

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

代码语言:javascript
复制
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中的任何地方。

如果您有实用程序并希望为它们提供可翻译的名称,请为它们提供title属性,如下所示:

代码语言:javascript
复制
from zope.i18nmessageid import MessageFactory
_ = MessageFactory('mydomain')

class MyShortCut(object):

    title = _('My shortcut')

并在UI中使用title属性。

票数 10
EN

Stack Overflow用户

发布于 2011-08-01 23:11:05

您不希望这样做。name属性用于应用程序,而不是最终用户,并且需要稳定。

如果你翻译它,那么你将不得不通过你的代码翻译所有的命名查找!

可以使用<configure>元素上的i18n_domain="domain"标记来翻译标题和描述。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6899708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档