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

(-)a/misc/translator/LangInstaller.pm (-5 / +73 lines)
Lines 165-170 sub new { Link Here
165
        suffix => "-installer-MARC21.po",
165
        suffix => "-installer-MARC21.po",
166
    };
166
    };
167
167
168
    # EN locales sysprefs
169
    push @{$self->{installer}}, {
170
        name   => "Localized sysprefs",
171
        dirs   => [ 'installer/data/mysql/en/', ],
172
        suffix => "-locale-prefs.po",
173
    };
174
168
    # EN UNIMARC YAML installer files
175
    # EN UNIMARC YAML installer files
169
    push @{$self->{installer}}, {
176
    push @{$self->{installer}}, {
170
        name   => "UNIMARC YAML installer files",
177
        name   => "UNIMARC YAML installer files",
Lines 551-556 sub get_po_from_target { Link Here
551
    return $po;
558
    return $po;
552
}
559
}
553
560
561
sub get_po_from_locale_pref {
562
    my $self   = shift;
563
    my $target = shift;
564
565
    my $po;
566
    my $po_head = new Locale::PO;
567
    $po_head->{msgid}  = "\"\"";
568
    $po_head->{msgstr} = "".
569
        "Project-Id-Version: Koha Project - Installation files\\n" .
570
        "PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\\n" .
571
        "Last-Translator: FULL NAME <EMAIL\@ADDRESS>\\n" .
572
        "Language-Team: Koha Translation Team\\n" .
573
        "Language: ".$self->{lang}."\\n" .
574
        "MIME-Version: 1.0\\n" .
575
        "Content-Type: text/plain; charset=UTF-8\\n" .
576
        "Content-Transfer-Encoding: 8bit\\n";
577
578
    my @dirs = @{ $target->{dirs} };
579
    my $intradir = $self->{context}->config('intranetdir');
580
    for my $dir ( @dirs ) {                                                     # each dir
581
        opendir( my $dh, "$intradir/$dir" ) or die ("Can't open $intradir/$dir");
582
        my @filelist = grep { $_ =~ m/\.yml/ } readdir($dh);                    # Just yaml files
583
        close($dh);
584
        for my $file ( @filelist ) {                                            # each file
585
            my $yaml   = LoadFile( "$intradir/$dir/$file" );
586
            my @tables = @{ $yaml->{'tables'} };
587
            my $tablec;
588
            for my $table ( @tables ) {                                         # each table
589
                $tablec++;
590
                my $table_name = ( keys %$table )[0];
591
                my @translatable = @{ $table->{$table_name}->{translatable} };
592
                my @rows = @{ $table->{$table_name}->{rows} };
593
                my @comments;
594
                @comments = @{ $table->{$table_name}->{'comments'} } if ( $table->{$table_name}->{'comments'} );
595
                my $rowc;
596
                for my $row ( @rows ) {                                         # each row
597
                    $rowc++;
598
                    for my $field ( @translatable ) {                           # each field
599
                        my $automatic;
600
                        $automatic = "Use this to SET sysprefs\n" . join "\n", map { "$_: $row->{$_}" } @comments if ( @comments );
601
                        if ( defined $row->{$field} and not $po->{ "$row->{variable}# ".$row->{$field} } ) {
602
                            my $msg = new Locale::PO(
603
                                        -msgid => "$row->{variable}# ".$row->{$field}, -msgstr => "$row->{$field}",
604
                                        -reference => "$dir/$file:$table_name:$tablec:row:$rowc" );
605
                            $msg->automatic($automatic) if ( $automatic );
606
                            $msg->fuzzy(1);
607
                            $po->{ "$row->{variable}# ".$row->{$field} } = $msg;
608
                        }
609
                    }
610
                }
611
            }
612
        }
613
    }
614
    $po->{''} = $po_head if ( $po );
615
616
    return $po;
617
}
618
554
sub create_installer {
619
sub create_installer {
555
    my $self = shift;
620
    my $self = shift;
556
    return unless ( $self->{installer} );
621
    return unless ( $self->{installer} );
Lines 567-573 sub create_installer { Link Here
567
    }
632
    }
568
633
569
    for my $target ( @targets ) {
634
    for my $target ( @targets ) {
570
        my $po = get_po_from_target( $self, $target );
635
        my $po = ( $target->{suffix} =~ /locale-prefs/ ) ? get_po_from_locale_pref( $self, $target ) : get_po_from_target( $self, $target );
571
        # create output file only if there is something to write
636
        # create output file only if there is something to write
572
        if ( $po ) {
637
        if ( $po ) {
573
            my $po_file = $self->po_filename( $target->{suffix} );
638
            my $po_file = $self->po_filename( $target->{suffix} );
Lines 587-593 sub update_installer { Link Here
587
652
588
    for my $target ( @targets ) {
653
    for my $target ( @targets ) {
589
        return unless ( -e $self->po_filename( $target->{suffix} ) );
654
        return unless ( -e $self->po_filename( $target->{suffix} ) );
590
        my $po = get_po_from_target( $self, $target );
655
        my $po = ( $target->{suffix} =~ /locale-pref/ ) ? get_po_from_locale_pref( $self, $target ) : get_po_from_target( $self, $target );
591
        # update file only if there is something to update
656
        # update file only if there is something to update
592
        if ( $po ) {
657
        if ( $po ) {
593
            my ( $fh, $po_temp ) = tempfile();
658
            my ( $fh, $po_temp ) = tempfile();
Lines 608-613 sub translate_yaml { Link Here
608
    my $target = shift;
673
    my $target = shift;
609
    my $srcyml = shift;
674
    my $srcyml = shift;
610
675
676
    my $pref = ( $target->{suffix} =~ /locale-pref/ ) ? 1 : 0;
677
611
    my $po_file = $self->po_filename( $target->{suffix} );
678
    my $po_file = $self->po_filename( $target->{suffix} );
612
    return $srcyml unless ( -e $po_file );
679
    return $srcyml unless ( -e $po_file );
613
680
Lines 654-660 sub translate_yaml { Link Here
654
                    }
721
                    }
655
                } else {
722
                } else {
656
                    next unless defined $row->{$field};                                 # next if null value
723
                    next unless defined $row->{$field};                                 # next if null value
657
                    my $po = $po_ref->{"\"$row->{$field}\""};                           # quoted key
724
                    my $key = ( $pref ) ? $row->{variable}."# ".$row->{$field} : $row->{$field};
725
                    $key  =~ s/"/\\"/g;
726
                    my $po = $po_ref->{"\"$key\""};
658
                    if ( $po  and not defined( $po->fuzzy() )                           # not fuzzy
727
                    if ( $po  and not defined( $po->fuzzy() )                           # not fuzzy
659
                              and length( $po->msgid() ) > 2                            # not empty msgid
728
                              and length( $po->msgid() ) > 2                            # not empty msgid
660
                              and length( $po->msgstr() ) > 2 ) {                       # not empty msgstr
729
                              and length( $po->msgstr() ) > 2 ) {                       # not empty msgstr
Lines 699-705 sub install_installer { Link Here
699
            make_path("$intradir/$tdir");
768
            make_path("$intradir/$tdir");
700
769
701
            opendir( my $dh, "$intradir/$dir" ) or die ("Can't open $intradir/$dir");
770
            opendir( my $dh, "$intradir/$dir" ) or die ("Can't open $intradir/$dir");
702
            my @files = grep { ! /^\.+$/ } readdir($dh);
771
            my @files = grep { $_ =~ m/\.yml/ } readdir($dh);
703
            close($dh);
772
            close($dh);
704
773
705
            for my $file ( @files ) {
774
            for my $file ( @files ) {
706
- 

Return to bug 24973