Как обеспечить переводы для автономного приложения django внутри приложения?
Я хочу предоставить тексты перевода (makemessages и запись строк перевода) внутри django-standalone приложения, чтобы приложение поддерживало несколько языков. Как это можно сделать?
В настоящее время я использую from django.utils.translation import gettext
для определения строк перевода. Я не хочу выполнять команду manage.py makemessages
в родительском проекте и повторять написание строк перевода для каждого родительского проекта.
Если вы используете Linux, вы можете использовать следующий код:
cd your_app_name
python ../manage.py makemessages
Также нет разницы и в windows, но я никогда не тестировал это!
Для получения дополнительной информации и понимания приоритета каталогов переводов читайте эту документацию.
Для запуска makemessages для приложения без родительского проекта я сделал следующий python скрипт makemessages.py
, я поместил его в корневой каталог моего приложения:
#!/usr/bin/env python
import sys
import django
from django.conf import settings
from django.core.management import call_command
from django.utils.translation import gettext_lazy as _
settings.configure(DEBUG=True,
LANGUAGES = [
('fi', _('Suomi')),
('en', _('English')),
],
USE_I18N = True,
USE_L10N = True,
USE_TZ = True,
LOCALE_PATHS = (
'locale/',
)
)
django.setup()
call_command('makemessages', '-l', 'fi', '-l', 'en')
После этого я смог создать первые переводы для указанных языков, выполнив команду
python3 makemessages.py
После запуска я смог обновить строки перевода и скомпилировать сообщения с
django-admin makemessages --all
django-admin compilemessages