在我的網站上使用Flask + Jinja2和Flask-Babel進行翻譯。該網站有兩種語言(取決於URL),我想添加一個鏈接在它們之間切換。爲了正確地做到這一點,我需要獲取當前語言環境的名稱,但是我沒有在文檔中找到這樣的功能。它是否存在?獲取Jinja2中的當前語言環境
2
A
回答
3
最後,我使用的這個解決方案:添加get_locale
功能,應該無論如何所定義,的Jinja2全局變量,然後調用它在模板等任何其他功能。
1
您有責任將用戶的區域設置存儲在數據庫的會話中。 Flask-babel
不會爲你做這個,所以你應該實現get_locale
方法flask-babel
能夠找到你的用戶的區域設置。
這是從flask-babel
文檔的get_locale
一個例子:
from flask import g, request
@babel.localeselector
def get_locale():
# if a user is logged in, use the locale from the user settings
user = getattr(g, 'user', None)
if user is not None:
return user.locale
# otherwise try to guess the language from the user accept
# header the browser transmits. We support de/fr/en in this
# example. The best match wins.
return request.accept_languages.best_match(['de', 'fr', 'en'])
+0
是的,我已經實現了這樣的get_locale函數,它返回一個語言環境取決於URL。但是如何獲得Jinja模板中的活動請求區域設置? – aplavin 2013-05-05 12:02:22
你是怎麼加入jinja2全局變量的?我試着做e = Environment,例如:{'get_locale':get_locale} – 8oh8 2017-03-21 02:00:36