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 355-360 sub create_tmpl { Link Here
355
    }
362
    }
356
}
363
}
357
364
365
sub create_messages {
366
    my $self = shift;
367
368
    system
369
        "$self->{cp} $self->{domain}.pot " .
370
        "$self->{path_po}/$self->{lang}-$self->{domain}.po";
371
}
372
373
sub update_messages {
374
    my $self = shift;
375
376
    system
377
        "$self->{msgmerge} -U " .
378
        "$self->{path_po}/$self->{lang}-$self->{domain}.po " .
379
        "$self->{domain}.pot";
380
}
381
382
sub extract_messages {
383
    my $self = shift;
384
385
    my $intranetdir = $self->{context}->config('intranetdir');
386
    my @files_to_scan;
387
    my @directories_to_scan = ('.');
388
    my @blacklist = qw(blib koha-tmpl skel tmp t);
389
    while (@directories_to_scan) {
390
        my $dir = shift @directories_to_scan;
391
        opendir DIR, "$intranetdir/$dir" or die "Unable to open $dir: $!";
392
        foreach my $entry (readdir DIR) {
393
            next if $entry =~ /^\./;
394
            my $relentry = "$dir/$entry";
395
            $relentry =~ s|^\./||;
396
            if (-d "$intranetdir/$relentry" and not grep /^$relentry$/, @blacklist) {
397
                push @directories_to_scan, "$relentry";
398
            } elsif (-f "$intranetdir/$relentry" and $relentry =~ /(pl|pm)$/) {
399
                push @files_to_scan, "$relentry";
400
            }
401
        }
402
    }
403
404
    my $xgettext_cmd = "$self->{xgettext} -L Perl --from-code=UTF-8 " .
405
        "-kmaketext -o $Bin/$self->{domain}.pot -D $intranetdir";
406
    $xgettext_cmd .= " $_" foreach (@files_to_scan);
407
408
    if (system($xgettext_cmd) != 0) {
409
        die "system call failed: $xgettext_cmd";
410
    }
411
}
412
413
sub remove_pot {
414
    my $self = shift;
415
416
    unlink "$Bin/$self->{domain}.pot";
417
}
358
418
359
sub install {
419
sub install {
360
    my $self = shift;
420
    my $self = shift;
Lines 376-386 sub get_all_langs { Link Here
376
sub update {
436
sub update {
377
    my $self = shift;
437
    my $self = shift;
378
    my @langs = $self->{lang} ? ($self->{lang}) : $self->get_all_langs();
438
    my @langs = $self->{lang} ? ($self->{lang}) : $self->get_all_langs();
439
    $self->extract_messages();
379
    for my $lang ( @langs ) {
440
    for my $lang ( @langs ) {
380
        $self->set_lang( $lang );
441
        $self->set_lang( $lang );
381
        $self->update_tmpl() unless $self->{pref_only};
442
        $self->update_tmpl() unless $self->{pref_only};
382
        $self->update_prefs();
443
        $self->update_prefs();
444
        $self->update_messages();
383
    }
445
    }
446
    $self->remove_pot();
384
}
447
}
385
448
386
449
Lines 389-394 sub create { Link Here
389
    return unless $self->{lang};
452
    return unless $self->{lang};
390
    $self->create_tmpl() unless $self->{pref_only};
453
    $self->create_tmpl() unless $self->{pref_only};
391
    $self->create_prefs();
454
    $self->create_prefs();
455
    $self->extract_messages();
456
    $self->create_messages();
457
    $self->remove_pot();
392
}
458
}
393
459
394
460
395
- 

Return to bug 8044