Django встроенная ошибка перевода во время выполнения - PullRequest
0 голосов
/ 26 февраля 2020

Я хочу перевести Django встроенные ошибки на разные языки во время выполнения. Можно ли перевести ошибку django для запрашиваемого пользователя в соответствии с его регионом.

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Пользовательский 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

0 голосов
/ 26 февраля 2020

Django имеет встроенный модуль для интернационализации, проверьте его здесь https://docs.djangoproject.com/en/3.0/topics/i18n/translation/#internationalization -in- python -код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...