Как в django 2 настроить мультиязычность?

settings.py:
...
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'news.middleware.SimpleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
...
LANGUAGE_CODE = 'ru'
LANGUAGES = (
    ('ru', _("Русский")),
    ('en', _("English"))
)

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

urls.py:
# Django
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.i18n import i18n_patterns

# Project
from news.views import hello

urlpatterns = [
    path('admin/', admin.site.urls),
    path('i18n/', include('django.conf.urls.i18n')),
]
urlpatterns += i18n_patterns(
    path('', hello),
    prefix_default_language=False,
)

views.py
from django.shortcuts import render
from django.http.response import HttpResponse
from django.utils.translation import get_language


def hello(request):
    return HttpResponse(get_language())

Запускаю команды:
python3 manage.py makemessages -l ru
python3 manage.py makemessages -l ru
python3 manage.py compilemessages

Захожу на страницу:

Как сделать так чтобы при заходе на заходе на русскую версию сайта /ru/ происходил редирект на /.
Если пользователь заходит на 127.0.0.1:8000/ru/foo-bar, его должно редирекнуть на 127.0.0.1:8000/foo-bar
На каком уровне лучше это делать ? middleware или url ?
  • Вопрос задан
  • 326 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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