【问题标题】:POT file with tags instead of <dynamic element>带有标签而不是 <dynamic element> 的 POT 文件
【发布时间】:2012-03-22 12:26:03
【问题描述】:

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

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

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

【问题讨论】:

    标签: python internationalization pyramid chameleon template-tal


    【解决方案1】:

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

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

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

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

    这将为您提供两个要翻译的字符串:This is ${very} stringvery

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      相关资源
      最近更新 更多