URL中的语言环境的webapp2路由

时间:2017-02-09 16:01:30

标签: google-app-engine internationalization locale webapp2

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

www.example.com?locale=en_US

但谷歌搜索控制台表示这是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路由并将区域设置作为参数传递给处理程序有什么好方法?

2 个答案:

答案 0 :(得分: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 %}

答案 1 :(得分:1)

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

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

没有语言环境的路由提供默认值,也用于x-default hreflang标记。