【问题标题】:webapp2 routes for locale in URLURL 中区域设置的 webapp2 路由
【发布时间】:2017-06-27 17:42:49
【问题描述】:

webapp2 i18n 文档有一个在参数中指定语言环境的示例,例如:

www.example.com?locale=en_US

但 Google 搜索控制台显示这是not recommended

我想改为将语言环境放在 URL 中,如下所示:

www.example.com
www.example.com/about
www.example.com/contact
www.example.com/fr
www.example.com/fr/about
www.example.com/fr/contact

设置 webapp2 路由并将语言环境作为参数传递给处理程序的好方法是什么?

【问题讨论】:

    标签: google-app-engine internationalization locale webapp2


    【解决方案1】:

    如果您想尝试我这样做的方式:设置正则表达式(app = webapp2.WSGIApplication([('/([^/]+)/?([^/]*)', RegionSearch)], config=settings.w2config, debug=settings.DEBUG),然后将参数“传递”到模板,您可以在模板中为许多不同的语言环境、时区和货币任意设置定位,例如

       {% if request.... == "..." %} # depend on values in the request
            {% set currency = "SEK" %}
            {% set format = "sv_SE" %}
            {% set timezoneinfo = 'Europe/Stockholm' %}
            {% set locale = "se" %}    
        {% endif %}
    

    【讨论】:

      【解决方案2】:

      我最终使用了 Dj Dac 答案的变体。我用两条这样的路线替换每条路线:

      Route(r'/page', views.PageHandler),
      Route(r'/<locale:\w\w>/page', views.PageHandler),
      

      没有区域设置的路由提供默认值,也用于 x-default hreflang 标记。

      【讨论】:

        猜你喜欢
        • 2012-11-23
        • 2017-04-18
        • 2012-02-19
        • 1970-01-01
        • 1970-01-01
        • 2016-10-06
        • 2019-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多