From 160d96e176331f8ac8eef4942bcc0af1868017c5 Mon Sep 17 00:00:00 2001 From: Bernardo Gonzalez Kriegel Date: Fri, 6 May 2022 19:27:28 -0300 Subject: [PATCH] Bug 28707: Translate RECEIPT notice There is a badly crafted regex used when extracting strings in multiline fields in yaml files The regex is my own, introduced in Bug 24262, sorry. This patch correct it a little. Better eyes are welcome. To test: 1) go to misc translator, update some language ./translate update fr-CA 2) check missing strings egrep "Total out|Operator ID|August 31" po/fr-CA-installer.po first two are from sample notices, third from sample creator data 3) apply the patch, repeat 1) 4) repeat 2), verify the strings are present in the translation file 5) translate some of the new strings, install the language, verify strings are present in the translated files ./translate install fr-CA check fr-CA/optional/sample_creator_data.yml and fr-CA/mandatory/sample_notices.yml There are some 60+ new strings. Signed-off-by: Katrin Fischer Signed-off-by: Jonathan Druart Signed-off-by: Tomas Cohen Arazi --- misc/translator/LangInstaller.pm | 2 +- misc/translator/xgettext-installer | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/misc/translator/LangInstaller.pm b/misc/translator/LangInstaller.pm index 8ab863f605..f5dd1831ba 100644 --- a/misc/translator/LangInstaller.pm +++ b/misc/translator/LangInstaller.pm @@ -318,7 +318,7 @@ sub translate_yaml { for my $field ( @translatable ) { # each translatable field if ( @multiline and grep { $_ eq $field } @multiline ) { # multiline fields, only notices ATM foreach my $line ( @{$row->{$field}} ) { - next if ( $line =~ /^(\s*<.*?>\s*$|^\s*\[.*?\]\s*|\s*)$/ ); # discard pure html, TT, empty + next if ( $line =~ /^(\s*<\/*\w+\s*>|\s*\[.*\]|\s*<.*\[.*\].*>|\s*)$/ ); # discard pure html, TT, empty my @ttvar; while ( $line =~ s/(<<.*?>>|\[\%.*?\%\]|<.*?>)/\%s/ ) { # put placeholders, save matches my $var = $1; diff --git a/misc/translator/xgettext-installer b/misc/translator/xgettext-installer index 5fa23faaba..ecb134b14a 100755 --- a/misc/translator/xgettext-installer +++ b/misc/translator/xgettext-installer @@ -111,7 +111,7 @@ for my $file (@files) { $mulc++; # discard pure html, TT, empty - next if ( $line =~ /^(\s*<.*?>\s*$|^\s*\[.*?\]\s*|\s*)$/ ); + next if ( $line =~ /^(\s*<\/*\w+\s*>|\s*\[.*\]|\s*<.*\[.*\].*>|\s*)$/ ); # put placeholders $line =~ s/(<<.*?>>|\[\%.*?\%\]|<.*?>)/\%s/g; -- 2.39.5