Django makemessages игнорировать переключатель не работает для меня

у меня проблемы с локализацией проекта django-nonrel, который развертывается в GAE. Из-за GAE я должен поместить все в свою папку проекта, так что это выглядит примерно так

project
  + django
  + dbindexer
  + registration
  + myapp
  ...
  + locale
  + templates

у меня есть строки для локализации в

2 ответов


./manage.py помогите makemessages

-i PATTERN, --ignore=PATTERN
                        Ignore files or directories matching this glob-style
                        pattern. Use multiple times to ignore more.

Я только что протестировал его, и эта команда успешно проигнорировала мое приложение:

./manage.py makemessages-l da-i " django*"

но будьте осторожны, прежде чем тестировать его, вы должны удалить старый .po-файл, поскольку я думаю, что он не будет автоматически удалять строки перевода из вашего предыдущего выполнения makemessages.


проблема в шаблоне-возможно, оболочка расширяла его для вас.

В общем-хорошо избегать разделителей пути (будь то / или \) в шаблоне.

Если вам нужно всегда передавать определенные параметры в makemessages команда, вы можете рассмотреть свою собственную обертку, как эта, которую я использую сам:

from django.conf import settings
from django.core.management.base import BaseCommand
from django.core.management import call_command

class Command(BaseCommand):
    help = "Scan i18n messages without going into externals."

    def handle(self, *args, **options):
        call_command('makemessages',
            all=True,
            extensions=['html', 'inc'],
            ignore_patterns=['externals*'])

это экономит ввод текста и дает общую точку входа для сканирования сообщений по всему проекту (ваш коллега-переводчик будет не уничтожайте переводы, пропуская какой-то параметр).

не удаляйте старый .po файл, как только вы очистили его от совершенно нежелательных (т. е. из каталога "django") сообщений. Это позволяет gettext перерабатывать старые неиспользуемые сообщения после их повторного использования (или simmilar, которые будут помечены как #, fuzzy.

редактировать - как отметил mt4x-обертка выше не позволяет передавать параметры в обернутую команду. Это легко исправить:

from django.conf import settings
from django.core.management.base import BaseCommand
from django.core.management import call_command
from django.core.management.commands.makemessages import Command as MakeMessagesCommand

class Command(BaseCommand):
    help = "Scan i18n messages without going into externals."
    option_list = MakeMessagesCommand.option_list

    def handle(self, *args, **options):
        options['all'] = True
        options['extensions'] = ['html', 'inc']
        options['ignore_patterns'] = ['externals*']
        call_command('makemessages', **options)

таким образом - вы можете исправить то, что должно быть исправлено, и Flex остальное. И это не должно быть слепое переопределение, как указано выше, но и некоторое условное редактирование параметров, переданных команде - добавление чего-то в список или только добавление его, когда он отсутствует.