Как изменить язык с URL-адреса Django?

Я хочу изменить язык, когда пользователь вводит в url локаль, что-то вроде http://example.com/es/, http://example.com/es/article-name, http://example.com/en/.

как я могу это сделать?

Ответы

Ответ 1

Оформить заказ django-locale-url.

Он предоставляет промежуточное программное обеспечение, которое делает именно то, о чем вы просите, поэтому вам не нужно проверять язык в urls.py

Ответ 2

Несколько способов сделать это, которые приходят на ум. Возможно, наиболее "совместимым с стандартами" способом будет использовать заголовок HTTP Accept-Language, доступный для представления как request.META['HTTP_ACCEPT_LANGUAGE'], чтобы определить язык, на котором пользователь предпочитает получать ресурсы, и просто вернуть переведенный HttpResponse в соответствующий язык.

Другой распространенный способ, более подробно описывающий то, что вы описываете, - попросить пользователя выбрать язык при первом их прибытии и сохранить выбор в сеансе. Как только пользователь делает выбор, перенаправляйте браузер в соответствующий подкаталог языка и используйте относительные ссылки в своих представлениях, чтобы не беспокоиться о скрещивании языков. Вы можете настроить URLconf, чтобы передать ключевое слово языка вашему представлению следующим образом:

urlpatterns = patterns('',
    (r'^(?P<lang>[a-zA-Z]{2})/ ...

Существует страница Интернационализация/Локализация на сайте документации Django о i18n, которая может помочь вам приступить к работе.