Bug 32030: I18N - Load de-DE, es-ES, fr-FR strings
[koha.git] / misc / translate_json.pl
1 use Modern::Perl;
2
3 use File::Slurp qw( read_file );
4 use JSON qw( from_json to_json );
5 use Encode qw( decode_utf8 );
6
7 our $lang = $ARGV[0] || 'en';
8 my $json = read_file(sprintf 'koha-tmpl/intranet-tmpl/prog/js/vue/locales/%s.json', $lang);
9 $lang =~ s|-.*||;
10 my $h = from_json($json);
11 my $i; my $size = scalar keys %$h;
12 my $translated = {};
13 while (my ($k, $v) = each %$h ){
14     warn sprintf "%s - Translating string %s/%s\n", $lang, ++$i, $size;
15     if ( ref($v) ) {
16         for my $kk ( keys %$v ) {
17             ( my $vv = $k ) =~ s|\s*$||;
18             if ( $kk eq 'counter' ) {
19                 $translated->{$k}->{counter} = translate("$vv \%{counter}");
20             } elsif ( $kk eq 'id' ) {
21                 $translated->{$k}->{id} = translate("$vv #\%{id}");
22             } else {
23                 die "INVALID structure with key " . $kk;
24             }
25         }
26     } elsif ( $k =~ /^There are no/ ) {
27         $translated->{$k} = translate("$k.");
28     }
29     else {
30         $translated->{$k} = translate($k);
31     }
32 }
33
34 say to_json($translated, {utf8 => 1, pretty => 1, canonical => 1});
35
36 sub translate {
37     my ( $string) = @_;
38     my $translated = $string;
39     return "/" if $string eq "/";
40     if ( $lang ne 'en' ) {
41         my $cmd = sprintf 'trans --brief :%s "%s"', $lang, $string;
42         $translated = decode_utf8 qx{$cmd};
43         chomp $translated;
44     }
45     return $translated;
46 }