diff options
| author | Claude Paroz <claude@2xlibre.net> | 2014-03-06 10:13:22 +0100 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2014-03-06 10:20:01 +0100 |
| commit | 06efeae598c6dafbe56d2ea323a0dccdd5bf2b8e (patch) | |
| tree | a41cb5ac13ab4bed39c4d7ef413c6a86aba79665 | |
| parent | 20948612c79b936424cb12cf9988713708232ced (diff) | |
Added --previous flag to msgmerge command used by makemessages
Also took the opportunity to slightly refactor gettext options
so as to ease customization by subclassing the command.
Thanks Michal Čihař for the report and initial patch.
| -rw-r--r-- | django/core/management/commands/makemessages.py | 57 | ||||
| -rw-r--r-- | docs/ref/django-admin.txt | 5 | ||||
| -rw-r--r-- | docs/releases/1.7.txt | 4 |
3 files changed, 32 insertions, 34 deletions
diff --git a/django/core/management/commands/makemessages.py b/django/core/management/commands/makemessages.py index 9c81bc8e20..7c2555ba2f 100644 --- a/django/core/management/commands/makemessages.py +++ b/django/core/management/commands/makemessages.py @@ -80,14 +80,8 @@ class TranslatableFile(object): '--keyword=ngettext_lazy:1,2', '--keyword=pgettext:1c,2', '--keyword=npgettext:1c,2,3', - '--from-code=UTF-8', - '--add-comments=Translators', '--output=-' - ] - if command.wrap: - args.append(command.wrap) - if command.location: - args.append(command.location) + ] + command.xgettext_options args.append(work_file) elif domain == 'django' and (file_ext == '.py' or file_ext in command.extensions): thefile = self.file @@ -115,14 +109,8 @@ class TranslatableFile(object): '--keyword=npgettext:1c,2,3', '--keyword=pgettext_lazy:1c,2', '--keyword=npgettext_lazy:1c,2,3', - '--from-code=UTF-8', - '--add-comments=Translators', '--output=-' - ] - if command.wrap: - args.append(command.wrap) - if command.location: - args.append(command.location) + ] + command.xgettext_options args.append(work_file) else: return @@ -206,6 +194,11 @@ class Command(NoArgsCommand): requires_system_checks = False leave_locale_alone = True + msgmerge_options = ['-q', '--previous'] + msguniq_options = ['--to-code=utf-8'] + msgattrib_options = ['--no-obsolete'] + xgettext_options = ['--from-code=UTF-8', '--add-comments=Translators'] + def handle_noargs(self, *args, **options): locale = options.get('locale') self.domain = options.get('domain') @@ -217,8 +210,19 @@ class Command(NoArgsCommand): if options.get('use_default_ignore_patterns'): ignore_patterns += ['CVS', '.*', '*~', '*.pyc'] self.ignore_patterns = list(set(ignore_patterns)) - self.wrap = '--no-wrap' if options.get('no_wrap') else '' - self.location = '--no-location' if options.get('no_location') else '' + + # Avoid messing with mutable class variables + if options.get('no_wrap'): + self.msgmerge_options = self.msgmerge_options[:] + ['--no-wrap'] + self.msguniq_options = self.msguniq_options[:] + ['--no-wrap'] + self.msgattrib_options = self.msgattrib_options[:] + ['--no-wrap'] + self.xgettext_options = self.xgettext_options[:] + ['--no-wrap'] + if options.get('no_location'): + self.msgmerge_options = self.msgmerge_options[:] + ['--no-location'] + self.msguniq_options = self.msguniq_options[:] + ['--no-location'] + self.msgattrib_options = self.msgattrib_options[:] + ['--no-location'] + self.xgettext_options = self.xgettext_options[:] + ['--no-location'] + self.no_obsolete = options.get('no_obsolete') self.keep_pot = options.get('keep_pot') @@ -307,12 +311,7 @@ class Command(NoArgsCommand): potfile = os.path.join(path, '%s.pot' % str(self.domain)) if not os.path.exists(potfile): continue - args = ['msguniq', '--to-code=utf-8'] - if self.wrap: - args.append(self.wrap) - if self.location: - args.append(self.location) - args.append(potfile) + args = ['msguniq'] + self.msguniq_options + [potfile] msgs, errors, status = popen_wrapper(args) if errors: if status != STATUS_OK: @@ -389,12 +388,7 @@ class Command(NoArgsCommand): pofile = os.path.join(basedir, '%s.po' % str(self.domain)) if os.path.exists(pofile): - args = ['msgmerge', '-q'] - if self.wrap: - args.append(self.wrap) - if self.location: - args.append(self.location) - args.extend([pofile, potfile]) + args = ['msgmerge'] + self.msgmerge_options + [pofile, potfile] msgs, errors, status = popen_wrapper(args) if errors: if status != STATUS_OK: @@ -413,12 +407,7 @@ class Command(NoArgsCommand): fp.write(msgs) if self.no_obsolete: - args = ['msgattrib', '-o', pofile, '--no-obsolete'] - if self.wrap: - args.append(self.wrap) - if self.location: - args.append(self.location) - args.append(pofile) + args = ['msgattrib'] + self.msgattrib_options + ['-o', pofile, pofile] msgs, errors, status = popen_wrapper(args) if errors: if status != STATUS_OK: diff --git a/docs/ref/django-admin.txt b/docs/ref/django-admin.txt index 853f64b936..4571c24d3d 100644 --- a/docs/ref/django-admin.txt +++ b/docs/ref/django-admin.txt @@ -569,6 +569,11 @@ Example usage:: Added the ability to specify multiple locales. +.. versionchanged:: 1.7 + + Added the ``--previous`` option to the ``msgmerge`` command when merging + with existing po files. + .. django-admin-option:: --domain Use the ``--domain`` or ``-d`` option to change the domain of the messages files. diff --git a/docs/releases/1.7.txt b/docs/releases/1.7.txt index 6c1ab36c90..359bc4d217 100644 --- a/docs/releases/1.7.txt +++ b/docs/releases/1.7.txt @@ -572,6 +572,10 @@ Internationalization app or project message file. See :ref:`how-to-create-language-files` for details. +* The :djadmin:`makemessages` command now always adds the ``--previous`` + command line flag to the ``msgmerge`` command, keeping previously translated + strings in po files for fuzzy strings. + * The following settings to adjust the language cookie options were introduced: :setting:`LANGUAGE_COOKIE_AGE`, :setting:`LANGUAGE_COOKIE_DOMAIN` and :setting:`LANGUAGE_COOKIE_PATH`. |
