Нам нужен i18n API, который поддерживает множество языков в своих запросах. Как лучше всего использовать ключ заголовка «Accept-Languages»? Я думаю о том, чтобы иметь коллекцию для каждого языка и сделать прозрачный запрос для соответствующей коллекции. Или вы думаете, что лучше жестко закодировать язык в uri?
Прозрачный API интернационализации с Python EVE
Ответы (1)
Вы можете попробовать этот фрагмент фляги: http://flask.pocoo.org/snippets/128/ В любом случае использование заголовка Accept-Language не подходит для этого и лучше использовать cookie, но вы можете сделать запасной вариант к информации этого заголовка, если cookie не существует, чтобы получить содержимое заголовка, вы можете использовать flask.request.headers.get('Accept-Language')
, но имейте в виду, что этот заголовок может содержать не один язык, а например что-то вроде этого: da, en-gb;q=0.8, en;q=0.7
Вы можете использовать декоратор before_request для распознавания языка перед запросом. Что-то вроде этого:
@app.before_request
def before_request():
flask.request.lang = flask.request.cookies.get('lang')
if lang is None:
flask.request.lang = flask.request.headers.get('Accept-Language', 'en').split(' ')[0]
И тогда вы можете использовать flask.request.lang
везде, где вам это нужно.
person
Eugene Tsakh
schedule
16.11.2016
Спасибо, Юджин. Почему печенье лучше? Я знаю, как определить язык, но проблема в том, что я думаю, что нам нужны разные коллекции (одна для языка, чтобы я мог использовать текстовые индексы), поэтому, если клиент принимает «en», действие должно перейти к английской коллекции, и если он принимает «es», он должен, например, перейти в испанскую коллекцию. Если нет, клиент должен явно указать английскую, испанскую, французскую коллекцию.
- person Luis Miguel Morillas; 16.11.2016