带有标签的POT文件而不是<dynamic element =“”> </dynamic>

时间:2012-03-04 23:13:16

标签: python internationalization pyramid chameleon template-tal

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

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

我的变色龙模板(.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 ""

1 个答案:

答案 0 :(得分:2)

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

  1. 翻译人员可能会插入标记,这可能会破坏您的网站或产生安全问题
  2. 模板工具包无法确定翻译中是否有任何字符 需要转义或按原样输出。
  3. 通常需要在其中翻译带有动态组件或标记的项目:对于那些使用i18n:name属性的项目。例如,您可以这样做:

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

    这会给你两个字符串进行翻译:{{1​​}}和This is ${very} string