Локализация: django-admin compilemessages пропустить venv - PullRequest
0 голосов
/ 17 января 2019

Я использую локализацию в приложении Django 1.11. Я могу исключить папку виртуальной среды и папку node_modules при добавлении сообщений в файл сообщений, используя параметр -i, например:

django-admin makemessages -l 'no' -i venv
django-admin makemessages -d djangojs --locale no -i venv -i node_modules

После добавления переводов я компилирую сообщения, используя:

django-admin compilemessages

Обрабатывает django.po файлы всех установленных пакетов, расположенных в папке виртуальной среды. Таким образом, завершение компиляции занимает больше времени.

Я не нашел ни одного параметра аргумента для пропуска определенного пути из команды compilemessages в документации .

Можно ли пропустить venv или конкретный путь из compilemessages?

Ответы [ 2 ]

0 голосов
/ 08 августа 2019

Как уже говорили другие, к сожалению, есть только хаки, чтобы иметь дело с этим.

Тот, который я нашел наиболее прозрачным, состоял в отладке в compilemessages и проверке вызовов subprocess. Отсюда вы можете получить прямые вызовы инструмента msgfmt.

Для нашего сравнительно простого проекта makemessages собирает файлы *.po в locale/$LANGUAGE/LC_MESSAGES/django.po. Тогда msgfmt поместит сгенерированный *.mo в ту же папку. Итак, мы просто написали скрипт для выполнения таких шагов:

set -e

django-admin makemessages --all --ignore venv

# HACK: Run msgfmt manually instead from "django-admin compilemessages"
# because the latter also searches venv.
msgfmt -o locale/de/LC_MESSAGES/django.mo locale/de/LC_MESSAGES/django.po
msgfmt -o locale/en/LC_MESSAGES/django.mo locale/en/LC_MESSAGES/django.po
msgfmt -o locale/hu/LC_MESSAGES/django.mo locale/hu/LC_MESSAGES/django.po
# ...add other languages as needed.

Это, конечно, невероятно неуклюже, но легко понять и расширить. Надеемся, что compilemessages в конечном итоге получит опцию --ignore.

0 голосов
/ 07 мая 2019

ЛУЧШИЙ ХАК, КОТОРЫЙ Я НАЙДЕН, ЧТОБЫ ИГНОРИРОВАТЬ VENV:

cd to project
python ../manage.py makemessages  (jumping one directory up)
python ../manage.py compilemessages

этот маленький хак от напарника избегает компиляции venv .po

В этом отношении должен использоваться флаг - исключить

usage: django-admin compilemessages [-h] [--version] [-v {0,1,2,3}]
                                    [--settings SETTINGS]
                                    [--pythonpath PYTHONPATH] [--traceback]
                                    [--no-color] [--locale LOCALE]
                                    [--exclude EXCLUDE] [--use-fuzzy]

GitHub

        parser.add_argument(
            '--exclude', '-x', action='append', default=[],
            help='Locales to exclude. Default is none. Can be used multiple times.',
        )

К сожалению, это для локалей, но это единственное, что я нашел до сих пор

Из этих внутренних сообщений по разработке Django я вижу, что флаг игнорирования был скопирован из makemessages в compilemessages для будущей версии

Для собственного использования я использовал (исключая es и en)

django-admin compilemessages --exclude=sw --exclude=sl --exclude=sk --exclude=km --exclude=sv --exclude=ko --exclude=sq --exclude=sr --exclude=kk --exclude=ka --exclude=es_MX --exclude=fa --exclude=fy --exclude=fr --exclude=en_AU --exclude=ne --exclude=nb --exclude=nn --exclude=nl --exclude=id --exclude=az --exclude=io --exclude=ar --exclude=ia --exclude=kn --exclude=it --exclude=is --exclude=vi --exclude=af --exclude=my --exclude=mr --exclude=uk --exclude=pl --exclude=ur --exclude=mk --exclude=mn --exclude=ml --exclude=he --exclude=hi --exclude=hu --exclude=hr --exclude=en_GB --exclude=pa --exclude=cs --exclude=fi --exclude=cy --exclude=sr_Latn --exclude=os --exclude=pt --exclude=ja --exclude=bs --exclude=br --exclude=bn --exclude=ast --exclude=bg --exclude=hsb --exclude=dsb --exclude=ro --exclude=es_CO --exclude=ru --exclude=et --exclude=eu --exclude=zh_Hant --exclude=zh_Hans --exclude=be --exclude=eo --exclude=el --exclude=da --exclude=de --exclude=pt_BR --exclude=ta --exclude=ca --exclude=te --exclude=es_AR --exclude=th --exclude=lt --exclude=lv --exclude=tr --exclude=tt --exclude=es_VE --exclude=lb --exclude=gl --exclude=ga --exclude=gd --exclude=udm--exclude=sw --exclude=sl --exclude=sk --exclude=km --exclude=sv --exclude=ko --exclude=sq --exclude=sr --exclude=kk --exclude=ka --exclude=es_MX --exclude=fa --exclude=fy --exclude=fr --exclude=en_AU --exclude=ne --exclude=nb --exclude=nn --exclude=nl --exclude=id --exclude=az --exclude=io --exclude=ar --exclude=ia --exclude=kn --exclude=it --exclude=is --exclude=vi --exclude=af --exclude=my --exclude=mr --exclude=uk --exclude=pl --exclude=ur --exclude=mk --exclude=mn --exclude=ml --exclude=he --exclude=hi --exclude=hu --exclude=hr --exclude=en_GB --exclude=pa --exclude=cs --exclude=fi --exclude=cy --exclude=sr_Latn --exclude=os --exclude=pt --exclude=ja --exclude=bs --exclude=br --exclude=bn --exclude=ast --exclude=bg --exclude=hsb --exclude=dsb --exclude=ro --exclude=es_CO --exclude=ru --exclude=et --exclude=eu --exclude=zh_Hant --exclude=zh_Hans --exclude=be --exclude=eo --exclude=el --exclude=da --exclude=de --exclude=pt_BR --exclude=ta --exclude=ca --exclude=te --exclude=es_AR --exclude=th --exclude=lt --exclude=lv --exclude=tr --exclude=tt --exclude=es_VE --exclude=lb --exclude=gl --exclude=ga --exclude=gd --exclude=udm --exclude=zh_CN  --exclude=ky --exclude=zh_TW --exclude=no --exclude=pt_PT  --exclude=hy
...