1

django を使用し、レンダリングに jinja2 を使用し、メッセージ抽出に babel を使用する

国際化が必要な js ファイルがいくつかあります。それらからメッセージを抽出するための構文を理解することができませんでした。これにより、jinja2 でメッセージをレンダリングすることもできます。jinja2 が抽出可能な構文を読み取る方法を学習するか、jinja2 がレンダリングできるものから抽出する必要があります。(または、これを完全に別の方法で行います)

抽出中

jsでメッセージをマークすると

gettext('message')

ちゃんと抽出します。

レンダリング

しかし、jinja2 は js の gettext 呼び出しを置き換えません (js テンプレートを返す前に jinja2 でレンダリングしています) - 次のようなものが必要です

{% trans %}message{% endtrans %}

ただし、その構文を使用してメッセージを抽出することはできません。

Babel は、babel.messages の関数 extract_javascript を使用してメッセージを抽出していますが、このタイプのタグを処理する機能が備わっていないようです。

4

1 に答える 1

1

まあ、それは私ができるように見えます:

{{gettext("message")}} 

(gettext を定義せずに)

JS では、babel が抽出され、jinja2 がそれを置き換えます。

ただし、引用には注意してください。あなたはできません:

'{{gettext("message")}}'

extract_javascript はそれを読み取らないためです。ただし、安全にレンダリングする限り、引用符を内部に入れることができます。

{{gettext("'message'")|safe}}

そのため、翻訳者には、原文で見つけた箇所に必ず引用を残すようにしてください。

于 2012-05-18T07:02:34.110 に答える