From cbd936d0f87cf5109d3ef67c07797c657912f424 Mon Sep 17 00:00:00 2001 From: Berker Peksag Date: Wed, 29 Oct 2014 16:38:46 +0200 Subject: [PATCH] Fixed #18731 -- Added an example about customizing "makemessages" command. Thanks claudp for the suggestion and review. --- docs/ref/django-admin.txt | 5 +++++ docs/topics/i18n/translation.txt | 36 ++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) 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 =============