11

Jinja2 テンプレートがあり、Flask-Babel を使用してプロジェクトを翻訳しているとします。例えば:

<p>The <em>best</em> way of using the Internet is
to use <a href="{{ url_for('our_site') }}">our site</a>.</p>

それで、リンクと強調のある文があります。次に、自分の文を翻訳したいとします。明らかな方法は、gettext()または{% trans %}タグを使用することです:

<p>{% trans %}The {% endtrans %} <em>{% trans %}best{% endtrans %}</em>
{% trans %}way of using the Internet is to use{% endtrans %}
<a href="{{ url_for('our_site') }}">{% trans %}our site{% endtrans %}</a>{% trans %}.{% endtrans %}</p>

明らかに問題は、これが文をうまく翻訳できない複数の断片に分割することです。これにより、翻訳者は文字列「The」、「best」、「way to use the Internet is to use」、および「our site」をすべて別個の文字列と句読点と見なすことになります。もちろん、翻訳者は文を再構成し、どの単語をリンクして強調するかを個別に選択する必要があります。

それを踏まえて、解決策は何ですか?タグを含む文を 1 つの単位として翻訳するにはどうすればよいですか?

4

2 に答える 2

3

出来るよ:

{% trans url=url_for('our_site') %}
<p>The <em>best</em> way of using the Internet is to use <a href="{{ url }}">our site</a>.</p>
{% endtrans %}

オブジェクトのネストされた変数 ( obj.site_name) と同じ:

{% trans url=url_for('our_site'), site_name=obj.site_name %}
<p>The <em>best</em> way of using the Internet is
to use <a href="{{ url }}">our site</a>{{ site_name }}.</p>
{% endtrans %}

transそのため、変数を関数 paramsとして宣言する必要があります。そうしないと機能しtransません。詳細については、docsにアクセスしてください。

于 2020-11-05T20:29:17.607 に答える