Как изменить язык с Django URL? - PullRequest
13 голосов
/ 10 июня 2010

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

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

Ответы [ 3 ]

8 голосов
/ 28 июля 2010

Оформление заказа django-locale-url .

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

3 голосов
/ 28 июля 2015

В настоящее время лучшим способом является использование встроенного языкового префикса в шаблонах URL: https://docs.djangoproject.com/en/1.8/topics/i18n/translation/#language-prefix-in-url-patterns

3 голосов
/ 10 июня 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...