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 53-58 sub new { Link Here
53
    $self->{process}         = "$Bin/tmpl_process3.pl " . ($verbose ? '' : '-q');
53
    $self->{process}         = "$Bin/tmpl_process3.pl " . ($verbose ? '' : '-q');
54
    $self->{path_po}         = "$Bin/po";
54
    $self->{path_po}         = "$Bin/po";
55
    $self->{po}              = {};
55
    $self->{po}              = {};
56
    $self->{domain}          = 'messages';
57
    $self->{cp}              = `which cp`;
58
    $self->{msgmerge}        = `which msgmerge`;
59
    $self->{xgettext}        = `which xgettext`;
60
    chomp $self->{cp};
61
    chomp $self->{msgmerge};
62
    chomp $self->{xgettext};
56
63
57
    # Get all .pref file names
64
    # Get all .pref file names
58
    opendir my $fh, $self->{path_pref_en};
65
    opendir my $fh, $self->{path_pref_en};
Lines 372-377 sub create_tmpl { Link Here
372
    }
379
    }
373
}
380
}
374
381
382
sub create_messages {
383
    my $self = shift;
384
385
    system
386
        "$self->{cp} $self->{domain}.pot " .
387
        "$self->{path_po}/$self->{lang}-$self->{domain}.po";
388
}
389
390
sub update_messages {
391
    my $self = shift;
392
393
    system
394
        "$self->{msgmerge} -U " .
395
        "$self->{path_po}/$self->{lang}-$self->{domain}.po " .
396
        "$self->{domain}.pot";
397
}
398
399
sub extract_messages {
400
    my $self = shift;
401
402
    my $intranetdir = $self->{context}->config('intranetdir');
403
    my @files_to_scan;
404
    my @directories_to_scan = ('.');
405
    my @blacklist = qw(blib koha-tmpl skel tmp t);
406
    while (@directories_to_scan) {
407
        my $dir = shift @directories_to_scan;
408
        opendir DIR, "$intranetdir/$dir" or die "Unable to open $dir: $!";
409
        foreach my $entry (readdir DIR) {
410
            next if $entry =~ /^\./;
411
            my $relentry = "$dir/$entry";
412
            $relentry =~ s|^\./||;
413
            if (-d "$intranetdir/$relentry" and not grep /^$relentry$/, @blacklist) {
414
                push @directories_to_scan, "$relentry";
415
            } elsif (-f "$intranetdir/$relentry" and $relentry =~ /(pl|pm)$/) {
416
                push @files_to_scan, "$relentry";
417
            }
418
        }
419
    }
420
421
    my $xgettext_cmd = "$self->{xgettext} -L Perl --from-code=UTF-8 " .
422
        "-kmaketext -o $Bin/$self->{domain}.pot -D $intranetdir";
423
    $xgettext_cmd .= " $_" foreach (@files_to_scan);
424
425
    if (system($xgettext_cmd) != 0) {
426
        die "system call failed: $xgettext_cmd";
427
    }
428
}
429
430
sub remove_pot {
431
    my $self = shift;
432
433
    unlink "$Bin/$self->{domain}.pot";
434
}
375
435
376
sub install {
436
sub install {
377
    my $self = shift;
437
    my $self = shift;
Lines 393-403 sub get_all_langs { Link Here
393
sub update {
453
sub update {
394
    my $self = shift;
454
    my $self = shift;
395
    my @langs = $self->{lang} ? ($self->{lang}) : $self->get_all_langs();
455
    my @langs = $self->{lang} ? ($self->{lang}) : $self->get_all_langs();
456
    $self->extract_messages();
396
    for my $lang ( @langs ) {
457
    for my $lang ( @langs ) {
397
        $self->set_lang( $lang );
458
        $self->set_lang( $lang );
398
        $self->update_tmpl() unless $self->{pref_only};
459
        $self->update_tmpl() unless $self->{pref_only};
399
        $self->update_prefs();
460
        $self->update_prefs();
461
        $self->update_messages();
400
    }
462
    }
463
    $self->remove_pot();
401
}
464
}
402
465
403
466
Lines 406-411 sub create { Link Here
406
    return unless $self->{lang};
469
    return unless $self->{lang};
407
    $self->create_tmpl() unless $self->{pref_only};
470
    $self->create_tmpl() unless $self->{pref_only};
408
    $self->create_prefs();
471
    $self->create_prefs();
472
    $self->extract_messages();
473
    $self->create_messages();
474
    $self->remove_pot();
409
}
475
}
410
476
411
477
412
- 

Return to bug 8044