diff --git a/docs/ref/django-admin.txt b/docs/ref/django-admin.txt index 37f9cc018e..870e7b9078 100644 --- a/docs/ref/django-admin.txt +++ b/docs/ref/django-admin.txt @@ -666,6 +666,11 @@ Use the ``--keep-pot`` option to prevent Django from deleting the temporary .pot files it generates before creating the .po file. This is useful for debugging errors which may prevent the final language files from being created. +.. seealso:: + + See :ref:`customizing-makemessages` for instructions on how to customize + the keywords that :djadmin:`makemessages` passes to ``xgettext``. + makemigrations [] ---------------------------- diff --git a/docs/topics/i18n/translation.txt b/docs/topics/i18n/translation.txt index 05ff747401..8ef9b89c6b 100644 --- a/docs/topics/i18n/translation.txt +++ b/docs/topics/i18n/translation.txt @@ -1455,6 +1455,42 @@ translation utilities with a ``gettext`` package if the command ``xgettext --version`` entered at a Windows command prompt causes a popup window saying "xgettext.exe has generated errors and will be closed by Windows". +.. _customizing-makemessages: + +Customizing the ``makemessages`` command +---------------------------------------- + +.. highlightlang:: python + +If you want to pass additional parameters to ``xgettext``, you need to create a +custom :djadmin:`makemessages` command and override its ``xgettext_options`` +attribute:: + + from django.core.management.commands import makemessages + + class Command(makemessages.Command): + xgettext_options = makemessages.Command.xgettext_options + ['--keyword=mytrans'] + +If you need more flexibility, you could also add a new argument to your custom +:djadmin:`makemessages` command:: + + from django.core.management.commands import makemessages + + class Command(makemessages.Command): + + def add_arguments(self, parser): + super(Command, self).add_arguments(parser) + parser.add_argument('--extra-keyword', dest='xgettext_keywords', + action='append') + + def handle(self, *args, **options): + xgettext_keywords = options.pop('xgettext_keywords') + if xgettext_keywords: + self.xgettext_options = ( + makemessages.Command.xgettext_options[:] + + ['--keyword=%s' % kwd for kwd in xgettext_keywords] + ) + super(Command, self).handle(*args, **options) Miscellaneous =============