使用Python EVE的透明国际化API

时间:2016-11-15 14:01:16

标签: eve

我们需要一个支持其查询中的大量语言的i18n API。使用“Accept-Languages”标题键的最佳方法是什么?我正在考虑为每种语言设置一个集合,并对相应的集合进行透明查询。或者您认为在uri中对语言进行硬编码会更好吗?

1 个答案:

答案 0 :(得分:2)

你可以尝试这个烧瓶片段: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