Как изменить язык от URL Django?

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

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

13
задан Cœur 31 December 2016 в 08:23
поделиться

2 ответа

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

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

8
ответ дан 2 December 2019 в 00:31
поделиться

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

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

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

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

3
ответ дан 2 December 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: