Use LocaleMiddleware
A snippet showing how to use LocaleMiddleware in Django.
# settings.py (relevant)
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.locale.LocaleMiddleware", # <- enable
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
]
LANGUAGE_CODE = "en"
LANGUAGES = [
("en", "English"),
("fr", "French"),
("es", "Spanish"),
]
LOCALE_PATHS = [BASE_DIR / "locale"]
# urls.py
from django.conf.urls.i18n import i18n_patterns
from django.urls import path
from . import views
urlpatterns = [
# non-translated URLs
path("healthz/", views.health, name="health"),
]
urlpatterns += i18n_patterns(
path("about/", views.about, name="about"),
path("contact/", views.contact, name="contact"),
)
Explanation:
-
Place
LocaleMiddlewareafterSessionMiddlewareand beforeCommonMiddleware. - LocaleMiddleware activates language based on cookies/session/Accept-Language.
- i18n URL patterns prefix paths with the language code (e.g., /fr/about/).
- Category Internationalization (i18n)
- Total Views 396
- Last Modified 01 July, 2026
- Tags #i18n #middleware #locale #translation
Previous snippet
Set Default Language
Next snippet