13

私のFlaskアプリケーションのmain.pyファイルで、次のように定義しました。

from flaskext.babel import gettext
....
def somefun():
    return render_template('some.html', messages=messages)

テンプレートファイルsome.htmlで、私は以下を使用しました:

<input type='text' name='keywords' value='{{ keywords|default('') }}' placeholder='{{ gettext('Search...') }}' />

これによりエラーが発生します:

<input type='text' name='keywords' value='{{ keywords|default('') }}' placeholder='{{ gettext('Search...') }}' />
UndefinedError: 'gettext' is undefined

テンプレート用にこの関数をインポートするにはどうすればよいですか?

4

1 に答える 1

27

残念ながら、これはまったく文書化されていませんが、Flask-BabelはJinja2のi18n拡張機能を透過的に使用しています。これは、デフォルトで、式の次の関数が使用可能であることを意味します:gettextngettextおよび_

テンプレートタグを使用する可能性もあります。

{% trans %}foo{% endtrans%}

{% trans num %}
There is {{ num }} object.
{% pluralize %}
There are {{ num }} objects.
{% endtrans %}

そして、パッチを待っている不足しているドキュメントに関するバグレポート;)

于 2012-03-01T12:10:02.450 に答える