2

我正在尝试从 Pyramid 项目中的模板文件中翻译文本。或多或少在这个例子中: http: //docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/chameleon_i18n.html

现在我如何摆脱<dynamic element>我的 .pot 文件的评论?我想查看其余代码及其标签。

我的变色龙模板(.pt):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:tal="http://xml.zope.org/namespaces/tal"
  xmlns:i18n="http://xml.zope.org/namespaces/i18n"
  i18n:domain="MyDomain">
<head>
    ...
</head>
<body>
    <div i18n:translate="MyID">
        This will appear in the comments.
        <span>This will NOT.</span>
        While this will again appear.
    </div>
</body>
</html>

我使用 Babel 和 Lingua 在 setup.py 中使用以下选项提取消息:

message_extractors = { '.': [
        ('**.py', 'lingua_python', None ),
        ('**.pt', 'lingua_xml', None ),
        ]}

我的 .pot 文件中的相关输出如下所示:

#. Default: This will appear in the comments. <dynamic element> While this will
#. again appear.
#: myproject/templates/base.pt:10
msgid "MyID"
msgstr ""
4

1 回答 1

2

这是明确不支持的:翻译应该只包含文本 - 它不应该包含标记。否则你会遇到两个问题:

  1. 翻译人员可能会插入标记,这可能会破坏您的网站或造成安全问题
  2. 模板工具包无法确定翻译中的任何字符是否需要转义或应按原样输出。

通常需要翻译带有动态组件或内部标记的项目:对于那些使用 i18n:name 属性的项目。例如,您可以这样做:

<p i18n:translate="">This is <strong i18n:name="very" i18n:translate="">very</strong> important.

这会给你两个字符串来翻译:This is ${very} stringvery

于 2012-03-12T10:51:05.187 回答