2017-02-09 27 views
3

i18n-документация webapp2 имеет пример определения локаль в параметре, например .:webapp2 маршруты для локали в URL

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 маршрутов и прохождения языкового стандарта в качестве параметра обработчиков?

+0

FWIW - «Не рекомендуется» в этой ссылке * может быть ошибкой - он находится в столбце «Профи» (а также не содержит объяснений). Я бы, наверное, проигнорировал это, если бы мне понравилась идея. –

+0

@ DanCornilescu, я видел тот же совет в другом месте, поэтому я не думаю, что это ошибка. Я склонен все это делать, потому что это такое простое решение, но, с другой стороны, было бы больно изменить реализацию позже, если мне нужно было ... –

+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

Я закончил с использованием вариации ответа Dj DAC, я заменить каждый маршрут с двумя путями, как это:.

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

маршрута без локал дает значение по умолчанию, а также используется для й-умолчанию hreflang тег.