2016-11-15 3 views
1

Нам нужен API i18n, который поддерживает множество языков в своих запросах. Каков наилучший способ использования заголовка «Accept-Languages»? Я думаю о создании коллекции для каждого языка и сделать прозрачный запрос в соответствующей коллекции. Или вы считаете, что лучше жестко кодировать язык в uri?Прозрачный API интернационализации с Python EVE

ответ

2

Вы можете попробовать эту флягу фрагмент кода: http://flask.pocoo.org/snippets/128/ В любом случае с помощью Accept-Language заголовок не хорошо для этого и лучше использовать куки, но вы можете сделать возврат к информации этого заголовка, если куки не существует, то, чтобы получить содержимое заголовка, может использовать 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 везде, где это нужно.

+0

Спасибо, Eugene. Почему лучше печенье? Я знаю, как определить язык, но проблема в том, что я думаю, что нам нужны разные коллекции (один для языка, поэтому я могу использовать текстовые индексы), поэтому, если клиент принимает «en», действие должно перейти в коллекцию английского языка, и если он принимает «es», он должен пойти, например, в испанскую коллекцию. Если нет, клиент должен явно указать английский, испанский, французский. –

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