Author: julien
Date: 2011-11-11 05:07:14 -0800 (Fri, 11 Nov 2011)
New Revision: 17081

Modified:
   django/trunk/django/core/management/commands/makemessages.py
   django/trunk/docs/ref/django-admin.txt
   django/trunk/docs/releases/1.4.txt
   django/trunk/tests/regressiontests/i18n/commands/extraction.py
   django/trunk/tests/regressiontests/i18n/tests.py
Log:
Fixed #16903 -- Added `--no-location` option to the `makemessages` command to 
not write '#: filename:line' comment lines in language files. Thanks to alpar 
for the suggestion and patch.

Modified: django/trunk/django/core/management/commands/makemessages.py
===================================================================
--- django/trunk/django/core/management/commands/makemessages.py        
2011-11-11 12:25:53 UTC (rev 17080)
+++ django/trunk/django/core/management/commands/makemessages.py        
2011-11-11 13:07:14 UTC (rev 17081)
@@ -115,6 +115,7 @@
 
 def make_messages(locale=None, domain='django', verbosity='1', all=False,
         extensions=None, symlinks=False, ignore_patterns=[], no_wrap=False,
+        no_location=False,
         no_obsolete=False):
     """
     Uses the locale directory from the Django SVN tree or an application/
@@ -163,6 +164,7 @@
         languages = [os.path.basename(l) for l in locale_dirs]
 
     wrap = no_wrap and '--no-wrap' or ''
+    location = no_location and '--no-location' or ''
 
     for locale in languages:
         if verbosity > 0:
@@ -191,11 +193,11 @@
                 finally:
                     f.close()
                 cmd = (
-                    'xgettext -d %s -L C %s --keyword=gettext_noop '
+                    'xgettext -d %s -L C %s %s --keyword=gettext_noop '
                     '--keyword=gettext_lazy --keyword=ngettext_lazy:1,2 '
                     '--keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3 '
                     '--from-code UTF-8 --add-comments=Translators -o - "%s"' % 
(
-                        domain, wrap, os.path.join(dirpath, thefile)
+                        domain, wrap, location, os.path.join(dirpath, thefile)
                     )
                 )
                 msgs, errors = _popen(cmd)
@@ -235,14 +237,14 @@
                 if verbosity > 1:
                     sys.stdout.write('processing file %s in %s\n' % (file, 
dirpath))
                 cmd = (
-                    'xgettext -d %s -L Python %s --keyword=gettext_noop '
+                    'xgettext -d %s -L Python %s %s --keyword=gettext_noop '
                     '--keyword=gettext_lazy --keyword=ngettext_lazy:1,2 '
                     '--keyword=ugettext_noop --keyword=ugettext_lazy '
                     '--keyword=ungettext_lazy:1,2 --keyword=pgettext:1c,2 '
                     '--keyword=npgettext:1c,2,3 --keyword=pgettext_lazy:1c,2 '
                     '--keyword=npgettext_lazy:1c,2,3 --from-code UTF-8 '
                     '--add-comments=Translators -o - "%s"' % (
-                        domain, wrap, os.path.join(dirpath, thefile))
+                        domain, wrap, location, os.path.join(dirpath, thefile))
                 )
                 msgs, errors = _popen(cmd)
                 if errors:
@@ -272,8 +274,8 @@
                     os.unlink(os.path.join(dirpath, thefile))
 
         if os.path.exists(potfile):
-            msgs, errors = _popen('msguniq %s --to-code=utf-8 "%s"' %
-                                  (wrap, potfile))
+            msgs, errors = _popen('msguniq %s %s --to-code=utf-8 "%s"' %
+                                  (wrap, location, potfile))
             if errors:
                 os.unlink(potfile)
                 raise CommandError(
@@ -284,8 +286,8 @@
                     f.write(msgs)
                 finally:
                     f.close()
-                msgs, errors = _popen('msgmerge %s -q "%s" "%s"' %
-                                      (wrap, pofile, potfile))
+                msgs, errors = _popen('msgmerge %s %s -q "%s" "%s"' %
+                                      (wrap, location, pofile, potfile))
                 if errors:
                     os.unlink(potfile)
                     raise CommandError(
@@ -301,8 +303,8 @@
                 f.close()
             os.unlink(potfile)
             if no_obsolete:
-                msgs, errors = _popen('msgattrib %s -o "%s" --no-obsolete 
"%s"' %
-                                      (wrap, pofile, pofile))
+                msgs, errors = _popen('msgattrib %s %s -o "%s" --no-obsolete 
"%s"' %
+                                      (wrap, location, pofile, pofile))
                 if errors:
                     raise CommandError(
                         "errors happened while running msgattrib\n%s" % errors)
@@ -327,6 +329,8 @@
             default=True, help="Don't ignore the common glob-style patterns 
'CVS', '.*' and '*~'."),
         make_option('--no-wrap', action='store_true', dest='no_wrap',
             default=False, help="Don't break long message lines into several 
lines"),
+        make_option('--no-location', action='store_true', dest='no_location',
+            default=False, help="Don't write '#: filename:line' lines"),
         make_option('--no-obsolete', action='store_true', dest='no_obsolete',
             default=False, help="Remove obsolete message strings"),
     )
@@ -351,6 +355,7 @@
             ignore_patterns += ['CVS', '.*', '*~']
         ignore_patterns = list(set(ignore_patterns))
         no_wrap = options.get('no_wrap')
+        no_location = options.get('no_location')
         no_obsolete = options.get('no_obsolete')
         if domain == 'djangojs':
             extensions = handle_extensions(extensions or ['js'])
@@ -361,4 +366,4 @@
             sys.stdout.write('examining files with the extensions: %s\n'
                              % get_text_list(list(extensions), 'and'))
 
-        make_messages(locale, domain, verbosity, process_all, extensions, 
symlinks, ignore_patterns, no_wrap, no_obsolete)
+        make_messages(locale, domain, verbosity, process_all, extensions, 
symlinks, ignore_patterns, no_wrap, no_location, no_obsolete)

Modified: django/trunk/docs/ref/django-admin.txt
===================================================================
--- django/trunk/docs/ref/django-admin.txt      2011-11-11 12:25:53 UTC (rev 
17080)
+++ django/trunk/docs/ref/django-admin.txt      2011-11-11 13:07:14 UTC (rev 
17081)
@@ -475,6 +475,14 @@
 Use the ``--no-wrap`` option to disable breaking long message lines into
 several lines in language files.
 
+.. django-admin-option:: --no-location
+
+.. versionadded:: 1.4
+
+Use the ``--no-location`` option to not write '``#: filename:line``'
+comment lines in language files. Note that using this option makes it harder
+for technically skilled translators to understand each message's context.
+
 reset <appname appname ...>
 ---------------------------
 

Modified: django/trunk/docs/releases/1.4.txt
===================================================================
--- django/trunk/docs/releases/1.4.txt  2011-11-11 12:25:53 UTC (rev 17080)
+++ django/trunk/docs/releases/1.4.txt  2011-11-11 13:07:14 UTC (rev 17081)
@@ -477,6 +477,9 @@
   This should make it easier to read when debugging interaction with
   client-side Javascript code.
 
+* Added the :djadminopt:`--no-location` option to the :djadmin:`makemessages`
+  command.
+
 .. _backwards-incompatible-changes-1.4:
 
 Backwards incompatible changes in 1.4

Modified: django/trunk/tests/regressiontests/i18n/commands/extraction.py
===================================================================
--- django/trunk/tests/regressiontests/i18n/commands/extraction.py      
2011-11-11 12:25:53 UTC (rev 17080)
+++ django/trunk/tests/regressiontests/i18n/commands/extraction.py      
2011-11-11 13:07:14 UTC (rev 17081)
@@ -214,3 +214,20 @@
         self.assertTrue(os.path.exists(self.PO_FILE))
         po_contents = open(self.PO_FILE, 'r').read()
         self.assertMsgId('""\n"This literal should also be included wrapped or 
not wrapped depending on the "\n"use of the --no-wrap option."', po_contents, 
use_quotes=False)
+
+
+class NoLocationExtractorTests(ExtractorTests):
+
+    def test_no_location_enabled(self):
+        os.chdir(self.test_dir)
+        management.call_command('makemessages', locale=LOCALE, verbosity=0, 
no_location=True)
+        self.assertTrue(os.path.exists(self.PO_FILE))
+        po_contents = open(self.PO_FILE, 'r').read()
+        self.assertFalse('#: templates/test.html:55' in po_contents)
+
+    def test_no_location_disabled(self):
+        os.chdir(self.test_dir)
+        management.call_command('makemessages', locale=LOCALE, verbosity=0, 
no_location=False)
+        self.assertTrue(os.path.exists(self.PO_FILE))
+        po_contents = open(self.PO_FILE, 'r').read()
+        self.assertTrue('#: templates/test.html:55' in po_contents)

Modified: django/trunk/tests/regressiontests/i18n/tests.py
===================================================================
--- django/trunk/tests/regressiontests/i18n/tests.py    2011-11-11 12:25:53 UTC 
(rev 17080)
+++ django/trunk/tests/regressiontests/i18n/tests.py    2011-11-11 13:07:14 UTC 
(rev 17081)
@@ -28,7 +28,8 @@
 if can_run_extraction_tests:
     from .commands.extraction import (ExtractorTests, BasicExtractorTests,
         JavascriptExtractorTests, IgnoredExtractorTests, SymlinkExtractorTests,
-        CopyPluralFormsExtractorTests, NoWrapExtractorTests)
+        CopyPluralFormsExtractorTests, NoWrapExtractorTests,
+        NoLocationExtractorTests)
 if can_run_compilation_tests:
     from .commands.compilation import MessageCompilationTests, PoFileTests
 from .contenttypes.tests import ContentTypeTests

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to