Bug 6464 Check inconsistent placeholders in translated strings

Display a warning for strings that don't have the same count of %s placeholders
that the English original strings. Don't warn for not translated string and
'fuzzy' string because those strings are not installed, and this is the
translator responsability to examine them.

Based on Frère Sébastien Marie work.

Signed-off-by: Frère Sébastien Marie <semarie-koha@latrappe.fr>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
This commit is contained in:
Frédéric Demians 2011-06-06 14:43:21 +02:00 committed by Chris Cormack
parent e071651533
commit 2281350b6e

View file

@ -274,6 +274,21 @@ if (defined $href) {
# $charset_in = $candidate;
# }
# }
# BUG6464: check consistency of PO messages
# - count number of '%s' in msgid and msgstr
for my $msg ( values %$href ) {
my $id_count = split(/%s/, $msg->{msgid}) - 1;
my $str_count = split(/%s/, $msg->{msgstr}) - 1;
next if $id_count == $str_count ||
$msg->{msgstr} eq '""' ||
grep { /fuzzy/ } @{$msg->{_flags}};
warn_normal
"unconsistent %s count: ($id_count/$str_count):\n" .
" line: " . $msg->{loaded_line_number} . "\n" .
" msgid: " . $msg->{msgid} . "\n" .
" msgstr: " . $msg->{msgstr} . "\n", undef;
}
}
# set our charset in to UTF-8