summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2014-03-06 10:13:22 +0100
committerClaude Paroz <claude@2xlibre.net>2014-03-06 10:20:01 +0100
commit06efeae598c6dafbe56d2ea323a0dccdd5bf2b8e (patch)
treea41cb5ac13ab4bed39c4d7ef413c6a86aba79665
parent20948612c79b936424cb12cf9988713708232ced (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.py57
-rw-r--r--docs/ref/django-admin.txt5
-rw-r--r--docs/releases/1.7.txt4
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`.