2016-11-15 33 views
1

我们需要一个国际化的API,在其查询中支持许多语言。使用“Accept-Languages”标题密钥的最佳方式是什么?我正在考虑为每种语言设置一个集合,并在相应的集合上进行透明查询。或者你认为在uri中对语言进行硬编码更好吗?透明的国际化API与Python EVE

回答

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你需要这个。

+0

谢谢,尤金。为什么它是一个饼干更好?我知道如何检测语言,但问题是我认为我们需要不同的集合(一种用于语言,因此我可以使用文本索引),所以如果客户端接受'en',则操作必须转到英文集合,if if它接受'es',它必须以西班牙文集合为例。如果没有,客户必须明确地处理英文,西班牙文和法文。 –