@@ -, +, @@ files cd misc/traslator perl translate update xx-YY msgcat --no-wrap --use-first po/xx-YY-*po -o - | egrep "^msgid" | sort > ini.txt cd misc/traslator perl translate update xx-YY msgcat --no-wrap --use-first po/xx-YY-*po -o - | egrep "^msgid" | sort > end.txt diff ini.txt end.txt for example: < msgid "Translate item type [% itemtype.itemtype | html %]" > msgid "Translate item type %s" < msgid "Holds on this item: [% item_loo.item_holds | html %] / Total holds on this record: [% item_loo.holds | html -%]" > msgid "Holds on this item: %s / Total holds on this record: %s" < msgid "tag_anchor_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]" > msgid "tag_anchor_%s_%s%s" < msgid "[% innerloo.tag_lib | html %] - Click to Expand this Tag" > msgid "%s - Click to Expand this Tag" > msgid "Holds on this item: %s / Total holds on this record: %s" perl translate install xx-YY edit koha-tmpl/intranet-tmpl/prog/es-ES/modules/tools/batchMod-edit.tt around line '187', first '[% item_loo.item_holds | html %]', then '[% item_loo.holds | html -%]' on this case, or use another example --- misc/translator/tmpl_process3.pl | 28 ++++++++++++++++++++++------ misc/translator/xgettext.pl | 5 +++++ 2 files changed, 27 insertions(+), 6 deletions(-) --- a/misc/translator/tmpl_process3.pl +++ a/misc/translator/tmpl_process3.pl @@ -59,6 +59,7 @@ sub find_translation ($) { sub text_replace_tag ($$) { my($t, $attr) = @_; my $it; + my @ttvar; # value [tag=input], meta my $tag = lc($1) if $t =~ /^<(\S+)/s; @@ -71,12 +72,27 @@ sub text_replace_tag ($$) { my($key, $val, $val_orig, $order) = @{$attr->{$a}}; #FIXME if ($val =~ /\S/s) { - my $s = find_translation($val); - if ($attr->{$a}->[1] ne $s) { #FIXME - $attr->{$a}->[1] = $s; # FIXME - $attr->{$a}->[2] = ($s =~ /"/s)? "'$s'": "\"$s\""; #FIXME - $translated_p = 1; - } + # for selected attributes replace '[%..%]' with '%s' and remember matches + if ( $a =~ /title|value|alt|content|placeholder/ ) { + while ( $val =~ s/(\[\%.*?\%\])/\%s/ ) { + my $var = $1; + push @ttvar, $1; + } + } + # find translation for transformed attributes + my $s = find_translation($val); + # replace '%s' with original content (in order) on translated string, this is fragile! + if ( $a =~ /title|value|alt|content|placeholder/ and @ttvar ) { + while ( @ttvar ) { + my $var = shift @ttvar; + $s =~ s/\%s/$var/; + } + } + if ($attr->{$a}->[1] ne $s) { #FIXME + $attr->{$a}->[1] = $s; # FIXME + $attr->{$a}->[2] = ($s =~ /"/s)? "'$s'": "\"$s\""; #FIXME + $translated_p = 1; + } } } } --- a/misc/translator/xgettext.pl +++ a/misc/translator/xgettext.pl @@ -124,6 +124,11 @@ sub text_extract { || (ref $attr->{'type'} && $attr->{'type'}->[1] =~ /^(?:hidden|radio|checkbox)$/)); # FIXME my($key, $val, $val_orig, $order) = @{$attr->{$a}}; #FIXME $val = TmplTokenizer::trim $val; + # for selected attributes replace '[%..%]' with '%s' globally + if ( $a =~ /title|value|alt|content|placeholder/ ) { + $val =~ s/\[\%.*?\%\]/\%s/g; + } + # save attribute text for translation remember( $s, $val ) if $val =~ /\S/s; } } --