2012-03-01 25 views
9

Trong ứng dụng Flask của tôi, trong tập tin main.py, tôi đã xác định:Flask-Babel làm thế nào để sử dụng dịch tại Jinja mẫu tập tin

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

trong mẫu tập tin some.html, tôi đã sử dụng:

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

Điều này gây ra lỗi:

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

Làm cách nào để nhập hàm này để sử dụng mẫu?

Trả lời

18

Thật không may là điều này không được ghi chép gì cả, nhưng Flask-Babel là minh bạch sử dụng Jinja2's i18n extension. Điều này có nghĩa là theo mặc định, các chức năng sau cho biểu thức có sẵn: gettext, ngettext_.

Ngoài ra còn có khả năng sử dụng mẫu thẻ:

{% trans %}foo{% endtrans%} 

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

bug report about missing docs đó là chờ đợi bản vá lỗi;)

+1

nó không đúng sự thật, tôi không thể sử dụng "_" không có bất cứ hành động nhập khẩu. –

+0

@BrentJiang Bạn có thực sự bắt đầu phần mở rộng Flask-Babel không? – plaes

+0

@BrentJiang Xem tài liệu, trong ** Cấu hình ** – plaes

Các vấn đề liên quan