summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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`.