From ae2f810da05f83f980679bf08d4d88144d2ea04c Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 29 Jan 2013 14:27:42 +0100 Subject: [PATCH] Bug 9161: Followup: the -f param does not work correctly Without this patch, the -f param (for the translate script) add the modified line in the po file BUT comment all lines from others files. This patch concat the generated file with the previous one and merge them. This way produce a pretty po file with all our strings :) + Modification in LangInstaller.pm to fix a bug when the -f param was not given. Test plan: 1/ Update your po file : cd misc/translator perl translate update fr-FR git commit -a -m"TMP PO" 2/ Modification on 2 files: ie. catalogue/advsearch.tt:32

Advanced search Foo

catalogue/issuehistory.tt:38 Patron Bar 3/ Update your po file with only the first file: perl translate update fr-FR -f advsearch.tt 4/ Edit your po file and check that only the foo string is present (or git diff). 5/ Update your po file with only the second file: perl translate update fr-FR -f issuehistory 6/ Edit your po file and check that 2 strings are present (or git diff). 7/ Change the translation for these 2 strings and delete the fuzzy lines. 8/ Install the first file for your language: perl translate install fr-FR -f advsearch.tt 9/ Edit your translated file and verify the string is translated. Check that the issuehistory.tt file is not changed. 10/ Same for issuehistory: perl translate install fr-FR -f issuehistory 11/ stash your modification in your tt files (or reset --hard): git stash 12/ Check in your po file that the 2 strings are commented (git diff). 13/ To finish, install all template files and check that they are replaced correctly: perl translate install fr-FR --- misc/translator/LangInstaller.pm | 6 +++--- misc/translator/tmpl_process3.pl | 19 +++++++++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/misc/translator/LangInstaller.pm b/misc/translator/LangInstaller.pm index 18f74ff..78bd812 100644 --- a/misc/translator/LangInstaller.pm +++ b/misc/translator/LangInstaller.pm @@ -320,7 +320,7 @@ sub install_tmpl { "-o $trans->{dir}/$self->{lang} ". "-s $self->{path_po}/$self->{lang}$trans->{suffix} -r " . ( - $files + @$files ? '-f ' . join ' -f ', @$files : '' ) @@ -345,7 +345,7 @@ sub update_tmpl { "-i $trans->{dir}/en/ " . "-s $self->{path_po}/$self->{lang}$trans->{suffix} -r " . ( - $files + @$files ? '-f ' . join ' -f ', @$files : '' ) @@ -380,7 +380,7 @@ sub create_tmpl { "-i $trans->{dir}/en/ " . "-s $self->{path_po}/$self->{lang}$trans->{suffix} -r " . ( - $files + @$files ? '-f ' . join ' -f ', @$files : '' ) diff --git a/misc/translator/tmpl_process3.pl b/misc/translator/tmpl_process3.pl index 8961f5c..13d9cc7 100755 --- a/misc/translator/tmpl_process3.pl +++ b/misc/translator/tmpl_process3.pl @@ -373,13 +373,20 @@ if ($action eq 'create') { (defined $charset_in? ('-I', $charset_in): ()), (defined $charset_out? ('-O', $charset_out): ())); if ($st == 0) { - # Merge the temporary "pot file" with the specified po file ($str_file) - # FIXME: msgmerge(1) is a Unix dependency - # FIXME: need to check the return value - $st = system("msgmerge -U ".($quiet?'-q':'')." -s $str_file $tmpfile2"); + # Merge the temporary "pot file" with the specified po file ($str_file) + # FIXME: msgmerge(1) is a Unix dependency + # FIXME: need to check the return value + if ( @filenames ) { + my ($tmph3, $tmpfile3) = tmpnam(); + $st = system("msgcat $str_file $tmpfile2 > $tmpfile3"); + $st = system("msgmerge -U ".($quiet?'-q':'')." -s $str_file $tmpfile3") + unless $st; + } else { + $st = system("msgmerge -U ".($quiet?'-q':'')." -s $str_file $tmpfile2"); + } } else { - error_normal "Text extraction failed: $xgettext: $!\n", undef; - error_additional "Will not run msgmerge\n", undef; + error_normal "Text extraction failed: $xgettext: $!\n", undef; + error_additional "Will not run msgmerge\n", undef; } # unlink $tmpfile1 || warn_normal "$tmpfile1: unlink failed: $!\n", undef; # unlink $tmpfile2 || warn_normal "$tmpfile2: unlink failed: $!\n", undef; -- 1.7.10.4