【问题标题】:Transparent Internationalization API with Python EVE使用 Python EVE 的透明国际化 API
【发布时间】:2016-11-17 02:14:36
【问题描述】:

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

【问题讨论】:

    标签: eve


    【解决方案1】:

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

    【讨论】:

    • 谢谢,尤金。为什么饼干更好?我知道如何检测语言,但问题是我认为我们需要不同的集合(一个用于语言,以便我可以使用文本索引),所以如果客户端接受“en”,则操作必须转到英语集合,如果它接受'es',例如它必须去西班牙集合。如果没有,客户必须明确解决英语、西班牙语、法语集合。
    猜你喜欢
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 2013-07-08
    相关资源
    最近更新 更多