1

jinja2 html テンプレートを使用して python を実行する App Engine アプリがあります。私はそれを国際化するためにpybabelを使用しています。テンプレートから抽出するコマンドを実行するpybabel extract -F babel.cfg -o ./locale/messages.pot ./と、単一引用符で囲まれた文字列に余分な単一引用符 ' が追加され、二重引用符を使用するキーワードの二重引用符がエスケープされます。

例: これらの文字列を抽出しています:

index.html
<h1 class="offset2 span10 pageTitle">{{ _("appname") }}</h1> 
<p>{{ _('about') }}</p> 

になる

messages.pot
#: templates/index.html:57
msgid "\"appname\""
msgstr ""

#: templates/index.html:58
msgid "'about'"
msgstr ""

動作しません。予想される(不要な文字を手動で削除すると動作することを確認した)出力は次のようになります。

messages.pot
#: templates/index.html:57
msgid "appname"
msgstr ""

#: templates/index.html:58
msgid "about"
msgstr ""

pybabel 抽出が実行された後の messages.pot 内。

もちろん、これはアプリを更新してコンパイルして実行すると機能しませんが、余分に追加された一重引用符とエスケープされた引用符を削除すると、意図したとおりに機能します。テンプレート ファイルのキーワードに引用符を使用しないと、機能しません。

babel.cfg ファイルは非常に単純です。

[django: templates/**.*]
[python: /**.py]
encoding = utf-8
[extractors]
jinja2 = jinja2.ext:babel_extract

テンプレートからキーワードを抽出するときに、pybabel 抽出に余分な引用符を含めないようにする方法に関する提案はありますか? または、ファイルから抽出する他の方法はありますか?

4

1 に答える 1

2

問題は babel.cfg ファイルにありました。から変更します

[django: templates/**.*]

[jinja2: templates/**.*]
于 2013-12-12T15:48:04.033 に答える