From b5639b43e9fb1a408e14fda712fc29c4a073dbf7 Mon Sep 17 00:00:00 2001 From: MandelBot Date: Mon, 16 Mar 2026 02:36:38 +0000 Subject: [PATCH] Add i18n URL routing and locale middleware for language switching --- mandelstudio/settings/base.py | 23 +++++++++++++++++++++++ mandelstudio/urls.py | 13 +++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 mandelstudio/urls.py diff --git a/mandelstudio/settings/base.py b/mandelstudio/settings/base.py index 39b7e89..a86e623 100644 --- a/mandelstudio/settings/base.py +++ b/mandelstudio/settings/base.py @@ -22,6 +22,29 @@ from ocyan.main.settings import * # pylint:disable=W0401,W0614 INSTALLED_APPS = ["mandelstudio"] + INSTALLED_APPS +# Use project-local URLConf so language-prefixed URLs are supported. +ROOT_URLCONF = "mandelstudio.urls" + +# Enable request language negotiation. +if "django.middleware.locale.LocaleMiddleware" not in MIDDLEWARE: + if "django.contrib.sessions.middleware.SessionMiddleware" in MIDDLEWARE: + idx = MIDDLEWARE.index("django.contrib.sessions.middleware.SessionMiddleware") + 1 + MIDDLEWARE.insert(idx, "django.middleware.locale.LocaleMiddleware") + else: + MIDDLEWARE.insert(0, "django.middleware.locale.LocaleMiddleware") + +LANGUAGE_CODE = "nl" +LANGUAGES = [ + ("nl", "Nederlands"), + ("en", "English"), + ("de", "Deutsch"), + ("fr", "Français"), + ("es", "Español"), + ("it", "Italiano"), + ("pt", "Português"), + ("ru", "Русский"), +] + STATIC_ROOT = str(BASE_PATH / "static") MEDIA_ROOT = str(BASE_PATH / "media") PRIVATE_MEDIA_ROOT = str(BASE_PATH / "private") diff --git a/mandelstudio/urls.py b/mandelstudio/urls.py new file mode 100644 index 0000000..4f83e7b --- /dev/null +++ b/mandelstudio/urls.py @@ -0,0 +1,13 @@ +from django.conf.urls.i18n import i18n_patterns +from django.urls import include, path + +from ocyan.main.urls import urlpatterns as ocyan_urlpatterns + +urlpatterns = [ + path("i18n/", include("django.conf.urls.i18n")), +] + +urlpatterns += i18n_patterns( + *ocyan_urlpatterns, + prefix_default_language=False, +)