2013-10-11 5 views
2

Как я могу перевести страницу с определенным языком для пользователя с помощью Flask-Babel? Я могу перевести все настройки пользовательских страниц: «app.config ['BABEL_DEFAULT_LOCALE'] = 'en'". Как я могу перевести его на одного пользователя?Flask-babel: перевод на одного пользователя

ответ

5

Смотрите документацию: http://pythonhosted.org/Flask-Babel/#configuration:

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']) 

Вы можете получить локаль от пользователя в базе данных, из URL-адрес, имя домена или субдомена, от запроса пользователя заголовков. У вас может быть собственный метод определения локали, но вам нужен языковой стандарт с babel.localeselector. Если babel.localeselector не может получить локаль, тогда он использует стандартную локаль в BABEL_DEFAULT_LOCALE.

Когда вы получите правильную локаль, вам также необходимо создать перевод .po и .mo для каждой поддерживаемой локали. Не забывайте, что каждая переведенная строка должна быть отмечена как для перевода.

Смежные вопросы