Localization 如何转换动态标题属性
我要做这样的翻译:Localization 如何转换动态标题属性,localization,internationalization,plone,Localization,Internationalization,Plone,我要做这样的翻译: 您可以看到,我有一个动态标题属性,我希望它是可翻译的 我试过这样做: 就像这样: 但这(当然)不起作用 有什么想法吗?你可以在上下文中强制翻译。translate(): 但是,这可能与所有最佳实践背道而驰。调用tal:attributes的结果会直接传递给翻译机器i18n:attributes将其键与tal:attributes生成的内容相匹配,如果存在匹配项,则忽略元素上的原始属性(参见此) 这意味着将查找“Cette etape fat partie du
您可以看到,我有一个动态标题属性,我希望它是可翻译的
我试过这样做:
就像这样:
但这(当然)不起作用
有什么想法吗?你可以在
上下文中强制翻译。translate()
:
但是,这可能与所有最佳实践背道而驰。调用
tal:attributes
的结果会直接传递给翻译机器i18n:attributes
将其键与tal:attributes
生成的内容相匹配,如果存在匹配项,则忽略元素上的原始属性(参见此)
这意味着将查找“Cette etape fat partie du troncon${troncon/nom}”的翻译结果,要求您为句子的每个变体提供翻译,这些变体可以使用troncon/nom
的所有可能值生成
要获得此字符串中正确占位符的支持,最好在生成troncon
结构的代码中创建一个消息id,并在那里进行翻译,大概在您的视图中。您需要:
- 带有占位符的消息id
- 将
值附加到消息idnom
- 将此邮件翻译为当前选定的语言
- 将结果包括在您的
结构中troncon
from zope.i18n import translate
from zope.i18nmessageid import MessageFactory
_ = MessageFactory('yourdomain')
troncon = dict(
...
nom=nom,
nomtitre=translate(
_(u'troncon_nomtitre', default=u'Cette etape fait partie du troncon ${nom}',
mapping=dict(nom=nom)),
context=self.request)
)
请注意,您需要请求翻译功能来选择正确的语言。没有尝试此操作,但它可以工作:您的视图可以提供一个方法/属性,在模板中以messageid(例如view.mytitle)的形式返回标题。以下内容应足够:tal:attribute=“title view/mytitle”i18n:attributes=“title”这种方法最大的缺点是i18ndude和其他查找可翻译字符串的工具不会将字符串作为消息id提取。我认为最好使用fRiSi在问题评论中描述的内容。
from zope.i18n import translate
from zope.i18nmessageid import MessageFactory
_ = MessageFactory('yourdomain')
troncon = dict(
...
nom=nom,
nomtitre=translate(
_(u'troncon_nomtitre', default=u'Cette etape fait partie du troncon ${nom}',
mapping=dict(nom=nom)),
context=self.request)
)