Ответ
Для реализации мультиязычности в Django используется встроенный фреймворк интернационализации (i18n). Он позволяет помечать строки для перевода, создавать файлы с переводами и автоматически определять язык пользователя.
**Основные шаги:**
1. **Настройка `settings.py`**
Активируйте i18n, определите поддерживаемые языки и добавьте `LocaleMiddleware`, который определяет язык на основе запроса (например, из URL-префикса или заголовков).
```python
# settings.py
USE_I18N = True
LANGUAGES = [
('en', 'English'),
('ru', 'Russian'),
]
# LocaleMiddleware должен быть после SessionMiddleware и до CommonMiddleware
MIDDLEWARE = [
# ...
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
# ...
]
```
2. **Разметка строк для перевода**
Используйте `gettext` в Python коде и тег `trans` в шаблонах.
* **В Python (`views.py`, `models.py`):**
```python
from django.utils.translation import gettext_lazy as _
class MyModel(models.Model):
name = models.CharField(_("model name"), max_length=100)
```
* **В шаблонах Django:**
```html
{% load i18n %}
/LC_MESSAGES/`.
4. **Настройка URL-адресов**
Используйте `i18n_patterns` для автоматического добавления языкового префикса к URL (`/en/...`, `/ru/...`).
```python
# urls.py
from django.conf.urls.i18n import i18n_patterns
urlpatterns += i18n_patterns(
path('admin/', admin.site.urls),
path('about/', views.about, name='about'),
# ... другие URL для перевода
)
```