Bug 12061 - tmpl_process3.pl - Remove obsoleted strings/backups
authorBernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Sun, 6 Apr 2014 22:21:47 +0000 (19:21 -0300)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Mon, 1 Sep 2014 14:00:03 +0000 (11:00 -0300)
This patch modifies the update process for PO files,
removing obsoleted strings. Currently they are removed
manually as part of the standar procedure of strings update.
Also backup files (*~) need to be removed manually.

To test:
1. Update translation files for any language, ej. fi-FI
(cd misc/translation; perl translate update fi-FI)

2. Check existence of obsoleted strings
egrep "#~ msg" misc/translator/po/fi-FI-*

3. Check existence of backup files
ls misc/translator/po/fi-FI-*~

4. Reset to HEAD and clean

5. Apply the patch

6. Update again, check there are no more obsoleted
strings nor backup files

Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
misc/translator/tmpl_process3.pl

index eea5f3e..1690306 100755 (executable)
@@ -348,7 +348,7 @@ if ($action eq 'create')  {
         close INPUT;
         close OUTPUT;
     }
-    $st = system("msgmerge -U ".($quiet?'-q':'')." -s $str_file $tmpfile2");
+    $st = system("msgmerge ".($quiet?'-q':'')." -s $str_file $tmpfile2 -o - | msgattrib --no-obsolete -o $str_file");
     } else {
     error_normal "Text extraction failed: $xgettext: $!\n", undef;
     error_additional "Will not run msgmerge\n", undef;
@@ -377,10 +377,10 @@ if ($action eq 'create')  {
         if ( @filenames ) {
             my ($tmph3, $tmpfile3) = tmpnam();
             $st = system("msgcat $str_file $tmpfile2 > $tmpfile3");
-            $st = system("msgmerge -U ".($quiet?'-q':'')." -s $str_file $tmpfile3")
+            $st = system("msgmerge ".($quiet?'-q':'')." -s $str_file $tmpfile3 -o - | msgattrib --no-obsolete -o $str_file")
                 unless $st;
         } else {
-            $st = system("msgmerge -U ".($quiet?'-q':'')." -s $str_file $tmpfile2");
+            $st = system("msgmerge ".($quiet?'-q':'')." -s $str_file $tmpfile2 -o - | msgattrib --no-obsolete -o $str_file");
         }
     } else {
         error_normal "Text extraction failed: $xgettext: $!\n", undef;
@@ -527,13 +527,13 @@ Anchors are represented by an <AI<n>> notation.
 The meaning of this non-standard notation might not be obvious.
 
 The create action calls xgettext.pl to do the actual work;
-the update action calls xgettext.pl and msgmerge(1) to do the
-actual work.
+the update action calls xgettext.pl, msgmerge(1) and msgattrib(1)
+to do the actual work.
 
 =head1 BUGS
 
-xgettext.pl must be present in the current directory; the
-msgmerge(1) command must also be present in the search path.
+xgettext.pl must be present in the current directory; both
+msgmerge(1) and msgattrib(1) must also be present in the search path.
 The script currently does not check carefully whether these
 dependent commands are present.