Lines 22-27
use Locale::PO;
Link Here
|
22 |
use File::Temp qw( :POSIX ); |
22 |
use File::Temp qw( :POSIX ); |
23 |
use TmplTokenizer; |
23 |
use TmplTokenizer; |
24 |
use VerboseWarnings qw( :warn :die ); |
24 |
use VerboseWarnings qw( :warn :die ); |
|
|
25 |
use Encode qw( encode_utf8 ); |
25 |
|
26 |
|
26 |
############################################################################### |
27 |
############################################################################### |
27 |
|
28 |
|
Lines 127-153
sub text_replace (**) {
Link Here
|
127 |
print $output find_translation($t); |
128 |
print $output find_translation($t); |
128 |
} elsif ($kind eq C4::TmplTokenType::TEXT_PARAMETRIZED) { |
129 |
} elsif ($kind eq C4::TmplTokenType::TEXT_PARAMETRIZED) { |
129 |
my $fmt = find_translation($s->form); |
130 |
my $fmt = find_translation($s->form); |
130 |
print $output TmplTokenizer::parametrize($fmt, 1, $s, sub { |
131 |
print $output encode_utf8 TmplTokenizer::parametrize($fmt, 1, $s, sub { |
131 |
$_ = $_[0]; |
132 |
$_ = $_[0]; |
132 |
my($kind, $t, $attr) = ($_->type, $_->string, $_->attributes); |
133 |
my($kind, $t, $attr) = ($_->type, $_->string, $_->attributes); |
133 |
$kind == C4::TmplTokenType::TAG && %$attr? |
134 |
$kind == C4::TmplTokenType::TAG && %$attr? |
134 |
text_replace_tag($t, $attr): $t }); |
135 |
text_replace_tag($t, $attr): $t }); |
135 |
} elsif ($kind eq C4::TmplTokenType::TAG && %$attr) { |
136 |
} elsif ($kind eq C4::TmplTokenType::TAG && %$attr) { |
136 |
print $output text_replace_tag($t, $attr); |
137 |
print $output encode_utf8(text_replace_tag($t, $attr)); |
137 |
} elsif ($s->has_js_data) { |
138 |
} elsif ($s->has_js_data) { |
138 |
for my $t (@{$s->js_data}) { |
139 |
for my $t (@{$s->js_data}) { |
139 |
# FIXME for this whole block |
140 |
# FIXME for this whole block |
140 |
if ($t->[0]) { |
141 |
if ($t->[0]) { |
141 |
printf $output "%s%s%s", $t->[2], find_translation $t->[3], |
142 |
printf $output "%s%s%s", encode_utf8($t->[2]), encode_utf8(find_translation $t->[3]), |
142 |
$t->[2]; |
143 |
encode_utf8($t->[2]); |
143 |
} else { |
144 |
} else { |
144 |
print $output $t->[1]; |
145 |
print $output encode_utf8($t->[1]); |
145 |
} |
146 |
} |
146 |
} |
147 |
} |
147 |
} elsif (defined $t) { |
148 |
} elsif (defined $t) { |
148 |
# Quick fix to bug 4472 |
149 |
# Quick fix to bug 4472 |
149 |
$t = "<!DOCTYPE stylesheet [" if $t =~ /DOCTYPE stylesheet/ ; |
150 |
$t = "<!DOCTYPE stylesheet [" if $t =~ /DOCTYPE stylesheet/ ; |
150 |
print $output $t; |
151 |
print $output encode_utf8($t); |
151 |
} |
152 |
} |
152 |
} |
153 |
} |
153 |
} |
154 |
} |
Lines 377-390
if ($action eq 'create') {
Link Here
|
377 |
# FIXME: need to check the return value |
378 |
# FIXME: need to check the return value |
378 |
unless (-f $str_file) { |
379 |
unless (-f $str_file) { |
379 |
local(*INPUT, *OUTPUT); |
380 |
local(*INPUT, *OUTPUT); |
380 |
open(INPUT, "<$tmpfile2"); |
381 |
open(my $input_fh, '<:encoding(utf-8)', $tmpfile2); |
381 |
open(OUTPUT, ">$str_file"); |
382 |
open(my $output_fh, '>:encoding(utf-8)', $str_file); |
382 |
while (<INPUT>) { |
383 |
while (<$input_fh>) { |
383 |
print OUTPUT; |
384 |
print encode_utf8 $output_fh; |
384 |
last if /^\n/s; |
385 |
last if /^\n/s; |
385 |
} |
386 |
} |
386 |
close INPUT; |
387 |
close $input_fh; |
387 |
close OUTPUT; |
388 |
close $output_fh; |
388 |
} |
389 |
} |
389 |
$st = system("msgmerge ".($quiet?'-q':'')." -s $str_file $tmpfile2 -o - | msgattrib --no-obsolete -o $str_file"); |
390 |
$st = system("msgmerge ".($quiet?'-q':'')." -s $str_file $tmpfile2 -o - | msgattrib --no-obsolete -o $str_file"); |
390 |
} else { |
391 |
} else { |
Lines 448-455
if ($action eq 'create') {
Link Here
|
448 |
-d $out_dir || die "$out_dir: The directory does not exist\n"; |
449 |
-d $out_dir || die "$out_dir: The directory does not exist\n"; |
449 |
|
450 |
|
450 |
# Try to open the file, because Locale::PO doesn't check :-/ |
451 |
# Try to open the file, because Locale::PO doesn't check :-/ |
451 |
open(INPUT, "<$str_file") || die "$str_file: $!\n"; |
452 |
open(my $input_fh, '<:encoding(utf-8)', $str_file) || die "$str_file: $!\n"; |
452 |
close INPUT; |
453 |
close $input_fh; |
453 |
|
454 |
|
454 |
# creates the new tmpl file using the new translation |
455 |
# creates the new tmpl file using the new translation |
455 |
for my $input (@in_files) { |
456 |
for my $input (@in_files) { |
Lines 465-473
if ($action eq 'create') {
Link Here
|
465 |
VerboseWarnings::set_input_file_name $input; |
466 |
VerboseWarnings::set_input_file_name $input; |
466 |
mkdir_recursive($targetdir) unless -d $targetdir; |
467 |
mkdir_recursive($targetdir) unless -d $targetdir; |
467 |
print STDERR "Creating $target...\n" unless $quiet; |
468 |
print STDERR "Creating $target...\n" unless $quiet; |
468 |
open( OUTPUT, ">$target" ) || die "$target: $!\n"; |
469 |
open( my $output_fh, '>:encoding(utf-8)' ) || die "$target: $!\n"; |
469 |
text_replace( $h, *OUTPUT ); |
470 |
text_replace( $h, *$output_fh); |
470 |
close OUTPUT; |
471 |
close $output_fh; |
471 |
} else { |
472 |
} else { |
472 |
# just copying the file |
473 |
# just copying the file |
473 |
mkdir_recursive($targetdir) unless -d $targetdir; |
474 |
mkdir_recursive($targetdir) unless -d $targetdir; |
474 |
- |
|
|