Как обеспечить переводы для автономного приложения 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
Вернуться на верх