URL 语言环境的 webapp2 路由

webapp2 routes for locale in URL

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 路由并将语言环境作为参数传递给处理程序的好方法是什么?

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

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

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

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

不带语言环境的路由给出默认值,也用于x-default hreflang标签。