2013-05-05 85 views
2

在我的網站上使用Flask + Jinja2和Flask-Babel進行翻譯。該網站有兩種語言(取決於URL),我想添加一個鏈接在它們之間切換。爲了正確地做到這一點,我需要獲取當前語言環境的名稱,但是我沒有在文檔中找到這樣的功能。它是否存在?獲取Jinja2中的當前語言環境

回答

3

最後,我使用的這個解決方案:添加get_locale功能,應該無論如何所定義,的Jinja2全局變量,然後調用它在模板等任何其他功能。

+1

你是怎麼加入jinja2全局變量的?我試着做e = Environment,例如:{'get_locale':get_locale} – 8oh8 2017-03-21 02:00:36

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