2012-03-01 12 views
9

Nella mia applicazione Flask, nel file di main.py, ho definito:Flask-Babel come utilizzare la traduzione in file modello Jinja

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

nel file di modello some.html, ho usato:

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

questo dà un errore:

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

Come importare questa funzione per l'uso del modello?

risposta

18

Purtroppo questo non è affatto documentato, ma Flask-Babel utilizza in modo trasparente Jinja2's i18n extension. Ciò significa che per impostazione predefinita sono disponibili le seguenti funzioni per le espressioni: gettext, ngettext e _.

C'è anche la possibilità di utilizzare i tag template:

{% trans %}foo{% endtrans%} 

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

E il bug report about missing docs che è in attesa di patch;)

+1

non è vero, non posso usare "_" senza azioni importatori. –

+0

@BrentJiang In realtà hai iniziato l'estensione Flask-Babel? – plaes

+0

@BrentJiang Vedi i documenti, sotto ** Configurazione ** – plaes

Problemi correlati