From d440e51758acad905cf002f23e7994b1a112d877 Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Mon, 20 Aug 2012 10:55:50 +0200 Subject: [PATCH] Bug 8044: (follow-up) fix warning and error messages in translate.pl CHARSET is now automatically replaced by UTF-8, and 'update' creates the PO file if it does not exist. Also do not try to create PO files if POT file creation failed (when there is no messages to translate for example). + add some verbosity + add Locale::Maketext and Locale::Maketext::Lexicon to Koha dependencies Signed-off-by: Marcel de Rooy Signed-off-by: Kyle M Hall Signed-off-by: Galen Charlton (cherry picked from commit 75bd34df7acba7b20bc7981f2484e79e19032d4a) Signed-off-by: Fridolin Somers Conflicts: C4/Installer/PerlDependencies.pm --- C4/Installer/PerlDependencies.pm | 10 ++++++++ misc/translator/LangInstaller.pm | 40 ++++++++++++++++++++++++-------- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/C4/Installer/PerlDependencies.pm b/C4/Installer/PerlDependencies.pm index 829660f4b4..ae0d1e6878 100644 --- a/C4/Installer/PerlDependencies.pm +++ b/C4/Installer/PerlDependencies.pm @@ -699,6 +699,16 @@ our $PERL_DEPS = { 'required' => '0', 'min_ver' => '0.73', }, + 'Locale::Maketext' => { + 'usage' => 'Core', + 'required' => '1', + 'min_ver' => '1.19', + }, + 'Locale::Maketext::Lexicon' => { + 'usage' => 'Core', + 'required' => '1', + 'min_ver' => '0.91', + }, }; 1; diff --git a/misc/translator/LangInstaller.pm b/misc/translator/LangInstaller.pm index e1d537fa91..e200262b2f 100644 --- a/misc/translator/LangInstaller.pm +++ b/misc/translator/LangInstaller.pm @@ -70,9 +70,11 @@ sub new { $self->{cp} = `which cp`; $self->{msgmerge} = `which msgmerge`; $self->{xgettext} = `which xgettext`; + $self->{sed} = `which sed`; chomp $self->{cp}; chomp $self->{msgmerge}; chomp $self->{xgettext}; + chomp $self->{sed}; # Get all .pref file names opendir my $fh, $self->{path_pref_en}; @@ -415,6 +417,7 @@ sub create_tmpl { sub create_messages { my $self = shift; + print "Create messages ($self->{lang})\n" if $self->{verbose}; system "$self->{cp} $self->{domain}.pot " . "$self->{path_po}/$self->{lang}-$self->{domain}.po"; @@ -423,10 +426,13 @@ sub create_messages { sub update_messages { my $self = shift; - system - "$self->{msgmerge} -U " . - "$self->{path_po}/$self->{lang}-$self->{domain}.po " . - "$self->{domain}.pot"; + my $pofile = "$self->{path_po}/$self->{lang}-$self->{domain}.po"; + print "Update messages ($self->{lang})\n" if $self->{verbose}; + if ( not -f $pofile ) { + print "File $pofile does not exist\n" if $self->{verbose}; + $self->create_messages(); + } + system "$self->{msgmerge} -U $pofile $self->{domain}.pot"; } sub extract_messages { @@ -458,6 +464,19 @@ sub extract_messages { if (system($xgettext_cmd) != 0) { die "system call failed: $xgettext_cmd"; } + + if ( -f "$Bin/$self->{domain}.pot" ) { + my $replace_charset_cmd = "$self->{sed} --in-place " . + "$Bin/$self->{domain}.pot " . + "--expression='s/charset=CHARSET/charset=UTF-8/'"; + if (system($replace_charset_cmd) != 0) { + die "system call failed: $replace_charset_cmd"; + } + } else { + print "No messages found\n" if $self->{verbose}; + return; + } + return 1; } sub remove_pot { @@ -486,14 +505,14 @@ sub get_all_langs { sub update { my ($self, $files) = @_; my @langs = $self->{lang} ? ($self->{lang}) : $self->get_all_langs(); - $self->extract_messages(); + my $extract_ok = $self->extract_messages(); for my $lang ( @langs ) { $self->set_lang( $lang ); $self->update_tmpl($files) unless $self->{pref_only}; $self->update_prefs(); - $self->update_messages(); + $self->update_messages() if $extract_ok; } - $self->remove_pot(); + $self->remove_pot() if $extract_ok; } @@ -502,9 +521,10 @@ sub create { return unless $self->{lang}; $self->create_tmpl($files) unless $self->{pref_only}; $self->create_prefs(); - $self->extract_messages(); - $self->create_messages(); - $self->remove_pot(); + if ($self->extract_messages()) { + $self->create_messages(); + $self->remove_pot(); + } } -- 2.39.5