Ответ 1
Оформить заказ django-locale-url.
Он предоставляет промежуточное программное обеспечение, которое делает именно то, о чем вы просите, поэтому вам не нужно проверять язык в urls.py
Я хочу изменить язык, когда пользователь вводит в url локаль, что-то вроде http://example.com/es/, http://example.com/es/article-name, http://example.com/en/.
как я могу это сделать?
Оформить заказ django-locale-url.
Он предоставляет промежуточное программное обеспечение, которое делает именно то, о чем вы просите, поэтому вам не нужно проверять язык в urls.py
Несколько способов сделать это, которые приходят на ум. Возможно, наиболее "совместимым с стандартами" способом будет использовать заголовок HTTP Accept-Language
, доступный для представления как request.META['HTTP_ACCEPT_LANGUAGE']
, чтобы определить язык, на котором пользователь предпочитает получать ресурсы, и просто вернуть переведенный HttpResponse
в соответствующий язык.
Другой распространенный способ, более подробно описывающий то, что вы описываете, - попросить пользователя выбрать язык при первом их прибытии и сохранить выбор в сеансе. Как только пользователь делает выбор, перенаправляйте браузер в соответствующий подкаталог языка и используйте относительные ссылки в своих представлениях, чтобы не беспокоиться о скрещивании языков. Вы можете настроить URLconf, чтобы передать ключевое слово языка вашему представлению следующим образом:
urlpatterns = patterns('',
(r'^(?P<lang>[a-zA-Z]{2})/ ...
Существует страница Интернационализация/Локализация на сайте документации Django о i18n, которая может помочь вам приступить к работе.
В настоящее время лучшим способом является использование встроенного языкового префикса в шаблонах URL: https://docs.djangoproject.com/en/1.8/topics/i18n/translation/#language-prefix-in-url-patterns