【问题标题】: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 标记。