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>

私は、setup.pyで次のオプションを使用してメッセージを抽出するためにBabelとLinguaを使用しています。

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

これは明示的にサポートされていません。翻訳にはテキストのみを含める必要があります。マークアップを含めることはできません。そうしないと、2つの問題が発生します。

  1. 翻訳者がマークアップを挿入すると、サイトが破損したり、セキュリティ上の問題が発生したりする可能性があります
  2. テンプレートツールキットには、翻訳内の文字をエスケープする必要があるのか​​、それともそのまま出力する必要があるのか​​を判断する方法がありません。

動的コンポーネントまたはマークアップを含むアイテムを変換する必要があるのが一般的です。それらの場合、i18n:name属性を使用します。たとえば、これを行うことができます:

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

それはあなたに翻訳する2つの文字列を与えるでしょう:This is ${very} stringvery

于 2012-03-12T10:51:05.187 に答える