2012-03-01 6 views
9

En mi solicitud frasco, en el archivo main.py, que define:matraz de Babel cómo utilizar la traducción en el archivo de plantilla de Jinja

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

en some.html archivo de plantilla, he utilizado:

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

esto da un error:

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

Cómo importar esta función para su uso plantilla?

Respuesta

18

Lamentablemente, esto no está documentado en absoluto, pero Flask-Babel está utilizando de forma transparente Jinja2's i18n extension. Esto significa que, por defecto, las siguientes funciones para expresiones están disponibles: gettext, ngettext y _.

También hay posibilidad de utilizar etiquetas de plantilla:

{% trans %}foo{% endtrans%} 

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

Y el bug report about missing docs que está a la espera de parches;)

+1

que no es verdad, no puedo utilizar "_" sin ninguna acción importadores. –

+0

@BrentJiang ¿Realmente iniciaste la extensión Flask-Babel? – plaes

+0

@BrentJiang Consulte los documentos, en ** Configuración ** – plaes

Cuestiones relacionadas