Lines 66-71
sub new {
Link Here
|
66 |
$self->{process} = "$Bin/tmpl_process3.pl " . ($verbose ? '' : '-q'); |
66 |
$self->{process} = "$Bin/tmpl_process3.pl " . ($verbose ? '' : '-q'); |
67 |
$self->{path_po} = "$Bin/po"; |
67 |
$self->{path_po} = "$Bin/po"; |
68 |
$self->{po} = { '' => $default_pref_po_header }; |
68 |
$self->{po} = { '' => $default_pref_po_header }; |
|
|
69 |
$self->{domain} = 'messages'; |
70 |
$self->{cp} = `which cp`; |
71 |
$self->{msgmerge} = `which msgmerge`; |
72 |
$self->{xgettext} = `which xgettext`; |
73 |
chomp $self->{cp}; |
74 |
chomp $self->{msgmerge}; |
75 |
chomp $self->{xgettext}; |
69 |
|
76 |
|
70 |
# Get all .pref file names |
77 |
# Get all .pref file names |
71 |
opendir my $fh, $self->{path_pref_en}; |
78 |
opendir my $fh, $self->{path_pref_en}; |
Lines 405-410
sub create_tmpl {
Link Here
|
405 |
} |
412 |
} |
406 |
} |
413 |
} |
407 |
|
414 |
|
|
|
415 |
sub create_messages { |
416 |
my $self = shift; |
417 |
|
418 |
system |
419 |
"$self->{cp} $self->{domain}.pot " . |
420 |
"$self->{path_po}/$self->{lang}-$self->{domain}.po"; |
421 |
} |
422 |
|
423 |
sub update_messages { |
424 |
my $self = shift; |
425 |
|
426 |
system |
427 |
"$self->{msgmerge} -U " . |
428 |
"$self->{path_po}/$self->{lang}-$self->{domain}.po " . |
429 |
"$self->{domain}.pot"; |
430 |
} |
431 |
|
432 |
sub extract_messages { |
433 |
my $self = shift; |
434 |
|
435 |
my $intranetdir = $self->{context}->config('intranetdir'); |
436 |
my @files_to_scan; |
437 |
my @directories_to_scan = ('.'); |
438 |
my @blacklist = qw(blib koha-tmpl skel tmp t); |
439 |
while (@directories_to_scan) { |
440 |
my $dir = shift @directories_to_scan; |
441 |
opendir DIR, "$intranetdir/$dir" or die "Unable to open $dir: $!"; |
442 |
foreach my $entry (readdir DIR) { |
443 |
next if $entry =~ /^\./; |
444 |
my $relentry = "$dir/$entry"; |
445 |
$relentry =~ s|^\./||; |
446 |
if (-d "$intranetdir/$relentry" and not grep /^$relentry$/, @blacklist) { |
447 |
push @directories_to_scan, "$relentry"; |
448 |
} elsif (-f "$intranetdir/$relentry" and $relentry =~ /(pl|pm)$/) { |
449 |
push @files_to_scan, "$relentry"; |
450 |
} |
451 |
} |
452 |
} |
453 |
|
454 |
my $xgettext_cmd = "$self->{xgettext} -L Perl --from-code=UTF-8 " . |
455 |
"-kmaketext -o $Bin/$self->{domain}.pot -D $intranetdir"; |
456 |
$xgettext_cmd .= " $_" foreach (@files_to_scan); |
457 |
|
458 |
if (system($xgettext_cmd) != 0) { |
459 |
die "system call failed: $xgettext_cmd"; |
460 |
} |
461 |
} |
462 |
|
463 |
sub remove_pot { |
464 |
my $self = shift; |
465 |
|
466 |
unlink "$Bin/$self->{domain}.pot"; |
467 |
} |
408 |
|
468 |
|
409 |
sub install { |
469 |
sub install { |
410 |
my ($self, $files) = @_; |
470 |
my ($self, $files) = @_; |
Lines 426-436
sub get_all_langs {
Link Here
|
426 |
sub update { |
486 |
sub update { |
427 |
my ($self, $files) = @_; |
487 |
my ($self, $files) = @_; |
428 |
my @langs = $self->{lang} ? ($self->{lang}) : $self->get_all_langs(); |
488 |
my @langs = $self->{lang} ? ($self->{lang}) : $self->get_all_langs(); |
|
|
489 |
$self->extract_messages(); |
429 |
for my $lang ( @langs ) { |
490 |
for my $lang ( @langs ) { |
430 |
$self->set_lang( $lang ); |
491 |
$self->set_lang( $lang ); |
431 |
$self->update_tmpl($files) unless $self->{pref_only}; |
492 |
$self->update_tmpl($files) unless $self->{pref_only}; |
432 |
$self->update_prefs(); |
493 |
$self->update_prefs(); |
|
|
494 |
$self->update_messages(); |
433 |
} |
495 |
} |
|
|
496 |
$self->remove_pot(); |
434 |
} |
497 |
} |
435 |
|
498 |
|
436 |
|
499 |
|
Lines 439-444
sub create {
Link Here
|
439 |
return unless $self->{lang}; |
502 |
return unless $self->{lang}; |
440 |
$self->create_tmpl($files) unless $self->{pref_only}; |
503 |
$self->create_tmpl($files) unless $self->{pref_only}; |
441 |
$self->create_prefs(); |
504 |
$self->create_prefs(); |
|
|
505 |
$self->extract_messages(); |
506 |
$self->create_messages(); |
507 |
$self->remove_pot(); |
442 |
} |
508 |
} |
443 |
|
509 |
|
444 |
|
510 |
|
445 |
- |
|
|