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 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
- 

Return to bug 8044