【发布时间】:2016-11-17 02:14:36
【问题描述】:
我们需要一个在查询中支持多种语言的 i18n API。使用“Accept-Languages”标题键的最佳方式是什么?我正在考虑为每种语言创建一个集合,并对相应的集合进行透明查询。还是您认为在 uri 中硬编码语言更好?
【问题讨论】:
标签: eve
我们需要一个在查询中支持多种语言的 i18n API。使用“Accept-Languages”标题键的最佳方式是什么?我正在考虑为每种语言创建一个集合,并对相应的集合进行透明查询。还是您认为在 uri 中硬编码语言更好?
【问题讨论】:
标签: eve
你可以试试这个烧瓶 sn-p: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。
【讨论】: