View | Details | Raw Unified | Return to bug 8044
Collapse All | Expand All

(-)a/Koha/I18N.pm (+34 lines)
Line 0 Link Here
1
package Koha::I18N;
2
3
use base qw(Locale::Maketext);
4
5
use C4::Templates;
6
use C4::Context;
7
8
use Locale::Maketext::Lexicon {
9
    'en' => ['Auto'],
10
    '*' => [
11
        Gettext =>
12
            C4::Context->config('intranetdir')
13
            . '/misc/translator/po/*-messages.po'
14
    ],
15
    '_AUTO' => 1,
16
};
17
18
sub get_handle_from_context {
19
    my ($class, $cgi, $interface) = @_;
20
21
    my $lh;
22
    my $lang = C4::Templates::getlanguage($cgi, $interface);
23
    if ($lang) {
24
        $lh = $class->get_handle($lang)
25
            or die "No language handle for '$lang'";
26
    } else {
27
        $lh = $class->get_handle()
28
            or die "Can't get a language handle";
29
    }
30
31
    return $lh;
32
}
33
34
1;
(-)a/misc/translator/LangInstaller.pm (-1 / +66 lines)
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 423-428 sub create_tmpl { Link Here
423
    }
430
    }
424
}
431
}
425
432
433
sub create_messages {
434
    my $self = shift;
435
436
    system
437
        "$self->{cp} $self->{domain}.pot " .
438
        "$self->{path_po}/$self->{lang}-$self->{domain}.po";
439
}
440
441
sub update_messages {
442
    my $self = shift;
443
444
    system
445
        "$self->{msgmerge} -U " .
446
        "$self->{path_po}/$self->{lang}-$self->{domain}.po " .
447
        "$self->{domain}.pot";
448
}
449
450
sub extract_messages {
451
    my $self = shift;
452
453
    my $intranetdir = $self->{context}->config('intranetdir');
454
    my @files_to_scan;
455
    my @directories_to_scan = ('.');
456
    my @blacklist = qw(blib koha-tmpl skel tmp t);
457
    while (@directories_to_scan) {
458
        my $dir = shift @directories_to_scan;
459
        opendir DIR, "$intranetdir/$dir" or die "Unable to open $dir: $!";
460
        foreach my $entry (readdir DIR) {
461
            next if $entry =~ /^\./;
462
            my $relentry = "$dir/$entry";
463
            $relentry =~ s|^\./||;
464
            if (-d "$intranetdir/$relentry" and not grep /^$relentry$/, @blacklist) {
465
                push @directories_to_scan, "$relentry";
466
            } elsif (-f "$intranetdir/$relentry" and $relentry =~ /(pl|pm)$/) {
467
                push @files_to_scan, "$relentry";
468
            }
469
        }
470
    }
471
472
    my $xgettext_cmd = "$self->{xgettext} -L Perl --from-code=UTF-8 " .
473
        "-kmaketext -o $Bin/$self->{domain}.pot -D $intranetdir";
474
    $xgettext_cmd .= " $_" foreach (@files_to_scan);
475
476
    if (system($xgettext_cmd) != 0) {
477
        die "system call failed: $xgettext_cmd";
478
    }
479
}
480
481
sub remove_pot {
482
    my $self = shift;
483
484
    unlink "$Bin/$self->{domain}.pot";
485
}
426
486
427
sub install {
487
sub install {
428
    my ($self, $files) = @_;
488
    my ($self, $files) = @_;
Lines 444-454 sub get_all_langs { Link Here
444
sub update {
504
sub update {
445
    my ($self, $files) = @_;
505
    my ($self, $files) = @_;
446
    my @langs = $self->{lang} ? ($self->{lang}) : $self->get_all_langs();
506
    my @langs = $self->{lang} ? ($self->{lang}) : $self->get_all_langs();
507
    $self->extract_messages();
447
    for my $lang ( @langs ) {
508
    for my $lang ( @langs ) {
448
        $self->set_lang( $lang );
509
        $self->set_lang( $lang );
449
        $self->update_tmpl($files) unless $self->{pref_only};
510
        $self->update_tmpl($files) unless $self->{pref_only};
450
        $self->update_prefs();
511
        $self->update_prefs();
512
        $self->update_messages();
451
    }
513
    }
514
    $self->remove_pot();
452
}
515
}
453
516
454
517
Lines 457-462 sub create { Link Here
457
    return unless $self->{lang};
520
    return unless $self->{lang};
458
    $self->create_tmpl($files) unless $self->{pref_only};
521
    $self->create_tmpl($files) unless $self->{pref_only};
459
    $self->create_prefs();
522
    $self->create_prefs();
523
    $self->extract_messages();
524
    $self->create_messages();
525
    $self->remove_pot();
460
}
526
}
461
527
462
528
463
- 

Return to bug 8044