Пользовательский django Настройка изменения языка во время выполнения Создайте имя каталога в качестве локали
И добавьте это в django settings.py LOCALE_PATHS = [os.path.join (BASE_DIR, 'locale'), ]
Также добавьте это в промежуточное ПО в settings.py
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
# here
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
]
Если вы хотите не ограничивать языки, вы можете добавить это в settings.py
LANGUAGES = [ ('en', 'English'), ('fi', 'Finnish'), ]
Теперь в терминал запустите этот
django-admin makemessages -l fi
Эта команда создаст каталог fi в директории locale. В этом каталоге есть файл .po. Откройте его и добавьте
msgid "your text here"
msgstr "your translation here"
И запустите его в терминале
django-admin compilemessages
Добавьте параметр 'ln' в заголовок запроса, для которого вы хотите изменить язык, например 'en', 'tr' , 'fi'
Для пользователя базы сеанса добавьте это в методе инициализации
from django.utils import translation
def lang(self, request, *args, **kwargs):
ln = request.META.get('HTTP_LN')
user_language = ln
request.session[translation.LANGUAGE_SESSION_KEY] = user_language
translation.activate(user_language)
И пользователь увидит переведенные данные. Примечание: вы можете переводить только ту строку, которую вы добавили в свой PO файл. enter code here