Lines 17-24
package LangInstaller;
Link Here
|
17 |
# with Koha; if not, write to the Free Software Foundation, Inc., |
17 |
# with Koha; if not, write to the Free Software Foundation, Inc., |
18 |
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
18 |
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
19 |
|
19 |
|
20 |
use strict; |
20 |
use Modern::Perl; |
21 |
use warnings; |
|
|
22 |
|
21 |
|
23 |
use C4::Context; |
22 |
use C4::Context; |
24 |
# WARNING: Any other tested YAML library fails to work properly in this |
23 |
# WARNING: Any other tested YAML library fails to work properly in this |
Lines 29-34
use FindBin qw( $Bin );
Link Here
|
29 |
|
28 |
|
30 |
$YAML::Syck::ImplicitTyping = 1; |
29 |
$YAML::Syck::ImplicitTyping = 1; |
31 |
|
30 |
|
|
|
31 |
|
32 |
sub set_lang { |
32 |
sub set_lang { |
33 |
my ($self, $lang) = @_; |
33 |
my ($self, $lang) = @_; |
34 |
|
34 |
|
Lines 63-83
sub new {
Link Here
|
63 |
# Get all available language codes |
63 |
# Get all available language codes |
64 |
opendir $fh, $self->{path_po}; |
64 |
opendir $fh, $self->{path_po}; |
65 |
my @langs = map { ($_) =~ /(.*)-i-opac/ } |
65 |
my @langs = map { ($_) =~ /(.*)-i-opac/ } |
66 |
grep { $_ =~ /.*-opac-/ } readdir($fh); |
66 |
grep { $_ =~ /.*-opac-t-prog/ } readdir($fh); |
67 |
closedir $fh; |
67 |
closedir $fh; |
68 |
$self->{langs} = \@langs; |
68 |
$self->{langs} = \@langs; |
69 |
|
69 |
|
70 |
# Map for both interfaces opac/intranet |
70 |
# Map for both interfaces opac/intranet |
71 |
$self->{interface} = { |
71 |
my $opachtdocs = $context->config('opachtdocs'); |
72 |
opac => { |
72 |
$self->{interface} = [ |
73 |
dir => $context->config('opachtdocs') . '/prog', |
73 |
{ |
|
|
74 |
name => 'OPAC prog', |
75 |
dir => "$opachtdocs/prog", |
74 |
suffix => '-i-opac-t-prog-v-3006000.po', |
76 |
suffix => '-i-opac-t-prog-v-3006000.po', |
75 |
}, |
77 |
}, |
76 |
intranet => { |
78 |
{ |
|
|
79 |
name => 'Intranet prog', |
77 |
dir => $context->config('intrahtdocs') . '/prog', |
80 |
dir => $context->config('intrahtdocs') . '/prog', |
78 |
suffix => '-i-staff-t-prog-v-3006000.po', |
81 |
suffix => '-i-staff-t-prog-v-3006000.po', |
79 |
} |
82 |
}, |
80 |
}; |
83 |
]; |
|
|
84 |
|
85 |
# Alternate opac themes |
86 |
opendir $fh, $context->config('opachtdocs'); |
87 |
for ( grep { not /^\.|\.\.|prog|lib$/ } readdir($fh) ) { |
88 |
push @{$self->{interface}}, { |
89 |
name => "OPAC $_", |
90 |
dir => "$opachtdocs/$_", |
91 |
suffix => "-opac-$_.po", |
92 |
}; |
93 |
} |
81 |
|
94 |
|
82 |
bless $self, $class; |
95 |
bless $self, $class; |
83 |
} |
96 |
} |
Lines 211-217
sub save_po {
Link Here
|
211 |
my $self = shift; |
224 |
my $self = shift; |
212 |
# Write .po entries into a file put in Koha standard po directory |
225 |
# Write .po entries into a file put in Koha standard po directory |
213 |
Locale::PO->save_file_fromhash( $self->po_filename, $self->{po} ); |
226 |
Locale::PO->save_file_fromhash( $self->po_filename, $self->{po} ); |
214 |
print "Saved in file: ", $self->po_filename, "\n" if $self->{verbose}; |
227 |
say "Saved in file: ", $self->po_filename if $self->{verbose}; |
215 |
} |
228 |
} |
216 |
|
229 |
|
217 |
|
230 |
|
Lines 291-311
sub install_prefs {
Link Here
|
291 |
|
304 |
|
292 |
sub install_tmpl { |
305 |
sub install_tmpl { |
293 |
my $self = shift; |
306 |
my $self = shift; |
294 |
print "Install templates\n" if $self->{verbose}; |
307 |
say "Install templates" if $self->{verbose}; |
295 |
while ( my ($interface, $tmpl) = each %{$self->{interface}} ) { |
308 |
for my $trans ( @{$self->{interface}} ) { |
296 |
print |
309 |
print |
297 |
" Install templates '$interface\n", |
310 |
" Install templates '$trans->{name}'\n", |
298 |
" From: $tmpl->{dir}/en/\n", |
311 |
" From: $trans->{dir}/en/\n", |
299 |
" To : $tmpl->{dir}/$self->{lang}\n", |
312 |
" To : $trans->{dir}/$self->{lang}\n", |
300 |
" With: $self->{path_po}/$self->{lang}$tmpl->{suffix}\n" |
313 |
" With: $self->{path_po}/$self->{lang}$trans->{suffix}\n" |
301 |
if $self->{verbose}; |
314 |
if $self->{verbose}; |
302 |
my $lang_dir = "$tmpl->{dir}/$self->{lang}"; |
315 |
my $lang_dir = "$trans->{dir}/$self->{lang}"; |
303 |
mkdir $lang_dir unless -d $lang_dir; |
316 |
mkdir $lang_dir unless -d $lang_dir; |
304 |
system |
317 |
system |
305 |
"$self->{process} install " . |
318 |
"$self->{process} install " . |
306 |
"-i $tmpl->{dir}/en/ " . |
319 |
"-i $trans->{dir}/en/ " . |
307 |
"-o $tmpl->{dir}/$self->{lang} ". |
320 |
"-o $trans->{dir}/$self->{lang} ". |
308 |
"-s $self->{path_po}/$self->{lang}$tmpl->{suffix} -r" |
321 |
"-s $self->{path_po}/$self->{lang}$trans->{suffix} -r" |
309 |
} |
322 |
} |
310 |
} |
323 |
} |
311 |
|
324 |
|
Lines 313-331
sub install_tmpl {
Link Here
|
313 |
sub update_tmpl { |
326 |
sub update_tmpl { |
314 |
my $self = shift; |
327 |
my $self = shift; |
315 |
|
328 |
|
316 |
print "Update templates\n" if $self->{verbose}; |
329 |
say "Update templates" if $self->{verbose}; |
317 |
while ( my ($interface, $tmpl) = each %{$self->{interface}} ) { |
330 |
for my $trans ( @{$self->{interface}} ) { |
318 |
print |
331 |
print |
319 |
" Update templates '$interface'\n", |
332 |
" Update templates '$trans->{name}'\n", |
320 |
" From: $tmpl->{dir}/en/\n", |
333 |
" From: $trans->{dir}/en/\n", |
321 |
" To : $self->{path_po}/$self->{lang}$tmpl->{suffix}\n" |
334 |
" To : $self->{path_po}/$self->{lang}$trans->{suffix}\n" |
322 |
if $self->{verbose}; |
335 |
if $self->{verbose}; |
323 |
my $lang_dir = "$tmpl->{dir}/$self->{lang}"; |
336 |
my $lang_dir = "$trans->{dir}/$self->{lang}"; |
324 |
mkdir $lang_dir unless -d $lang_dir; |
337 |
mkdir $lang_dir unless -d $lang_dir; |
325 |
system |
338 |
system |
326 |
"$self->{process} update " . |
339 |
"$self->{process} update " . |
327 |
"-i $tmpl->{dir}/en/ " . |
340 |
"-i $trans->{dir}/en/ " . |
328 |
"-s $self->{path_po}/$self->{lang}$tmpl->{suffix} -r" |
341 |
"-s $self->{path_po}/$self->{lang}$trans->{suffix} -r" |
329 |
} |
342 |
} |
330 |
} |
343 |
} |
331 |
|
344 |
|
Lines 333-338
sub update_tmpl {
Link Here
|
333 |
sub create_prefs { |
346 |
sub create_prefs { |
334 |
my $self = shift; |
347 |
my $self = shift; |
335 |
|
348 |
|
|
|
349 |
if ( -e $self->po_filename ) { |
350 |
say "Preferences .po file already exists. Delete it if you want to recreate it."; |
351 |
return; |
352 |
} |
336 |
$self->get_po_from_prefs(); |
353 |
$self->get_po_from_prefs(); |
337 |
$self->save_po(); |
354 |
$self->save_po(); |
338 |
} |
355 |
} |
Lines 341-357
sub create_prefs {
Link Here
|
341 |
sub create_tmpl { |
358 |
sub create_tmpl { |
342 |
my $self = shift; |
359 |
my $self = shift; |
343 |
|
360 |
|
344 |
print "Create templates\n" if $self->{verbose}; |
361 |
say "Create templates\n" if $self->{verbose}; |
345 |
while ( my ($interface, $tmpl) = each %{$self->{interface}} ) { |
362 |
for my $trans ( @{$self->{interface}} ) { |
346 |
print |
363 |
print |
347 |
" Create templates .po files for '$interface'\n", |
364 |
" Create templates .po files for '$trans->{name}'\n", |
348 |
" From: $tmpl->{dir}/en/\n", |
365 |
" From: $trans->{dir}/en/\n", |
349 |
" To : $self->{path_po}/$self->{lang}$tmpl->{suffix}\n" |
366 |
" To : $self->{path_po}/$self->{lang}$trans->{suffix}\n" |
350 |
if $self->{verbose}; |
367 |
if $self->{verbose}; |
351 |
system |
368 |
system |
352 |
"$self->{process} create " . |
369 |
"$self->{process} create " . |
353 |
"-i $tmpl->{dir}/en/ " . |
370 |
"-i $trans->{dir}/en/ " . |
354 |
"-s $self->{path_po}/$self->{lang}$tmpl->{suffix} -r" |
371 |
"-s $self->{path_po}/$self->{lang}$trans->{suffix} -r" |
355 |
} |
372 |
} |
356 |
} |
373 |
} |
357 |
|
374 |
|
358 |
- |
|
|