i18n: инфраструктура + переключатель языков + перевод меню (ru/uk/en)

Мультиязычность: русский — базовый (msgid), украинский и английский — переводы.

- Настройки: LocaleMiddleware, LANGUAGES=[ru,uk,en], LOCALE_PATHS, i18n
  context_processor; urls: django.conf.urls.i18n (set_language)
- Шелл index.html: {% load i18n %}, все пункты навигации/меню/пользовательского
  меню/нижней навигации помечены {% trans %}; динамический <html lang>;
  переключатель языков в хедере (select -> set_language)
- Каталоги locale/uk и locale/en: переведены строки меню/шелла (34), собраны .mo
- .gitignore: разрешено трекать locale/**/*.mo (нужны на проде, CI нет)

Остальные страницы пока на украинском (хардкод) — переводятся дальше поэтапно.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-25 11:46:40 +03:00
parent fcdd5cb662
commit 2bc9615ce5
8 changed files with 3521 additions and 41 deletions
+9 -1
View File
@@ -80,6 +80,7 @@ INSTALLED_APPS = [
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware', # выбор языка (после Session, до Common)
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
@@ -98,6 +99,7 @@ TEMPLATES = [
'OPTIONS': {
'context_processors': [
'django.template.context_processors.request',
'django.template.context_processors.i18n',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
@@ -121,7 +123,13 @@ AUTH_PASSWORD_VALIDATORS = [
{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator'},
]
LANGUAGE_CODE = 'ru'
LANGUAGE_CODE = 'ru' # базовый язык интерфейса (исходные строки msgid)
LANGUAGES = [
('ru', 'Русский'),
('uk', 'Українська'),
('en', 'English'),
]
LOCALE_PATHS = [BASE_DIR / 'locale']
TIME_ZONE = 'Europe/Kiev'
USE_I18N = True
USE_TZ = True