Bug 10712: Save missing config variables to install log
[koha.git] / misc / translator / LangInstaller.pm
index 00daaf4..f3525f8 100644 (file)
@@ -29,6 +29,19 @@ use FindBin qw( $Bin );
 $YAML::Syck::ImplicitTyping = 1;
 
 
+# Default file header for .po syspref files
+my $default_pref_po_header = Locale::PO->new(-msgid => '', -msgstr =>
+    "Project-Id-Version: PACKAGE VERSION\\n" .
+    "PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\\n" .
+    "Last-Translator: FULL NAME <EMAIL\@ADDRESS>\\n" .
+    "Language-Team: Koha Translate List <koha-translate\@lists.koha-community.org>\\n" .
+    "MIME-Version: 1.0\\n" .
+    "Content-Type: text/plain; charset=UTF-8\\n" .
+    "Content-Transfer-Encoding: 8bit\\n" .
+    "Plural-Forms: nplurals=2; plural=(n > 1);\\n"
+);
+
+
 sub set_lang {
     my ($self, $lang) = @_;
 
@@ -52,7 +65,7 @@ sub new {
     $self->{verbose}         = $verbose;
     $self->{process}         = "$Bin/tmpl_process3.pl " . ($verbose ? '' : '-q');
     $self->{path_po}         = "$Bin/po";
-    $self->{po}              = {};
+    $self->{po}              = { '' => $default_pref_po_header };
 
     # Get all .pref file names
     opendir my $fh, $self->{path_pref_en};
@@ -222,8 +235,13 @@ sub get_po_from_prefs {
 
 sub save_po {
     my $self = shift;
+
+    # Create file header if it doesn't already exist
+    my $po = $self->{po};
+    $po->{''} ||= $default_pref_po_header;
+
     # Write .po entries into a file put in Koha standard po directory
-    Locale::PO->save_file_fromhash( $self->po_filename, $self->{po} );
+    Locale::PO->save_file_fromhash( $self->po_filename, $po );
     say "Saved in file: ", $self->po_filename if $self->{verbose};
 }
 
@@ -303,7 +321,7 @@ sub install_prefs {
 
 
 sub install_tmpl {
-    my $self = shift;
+    my ($self, $files) = @_;
     say "Install templates" if $self->{verbose};
     for my $trans ( @{$self->{interface}} ) {
         print
@@ -318,13 +336,18 @@ sub install_tmpl {
             "$self->{process} install " .
             "-i $trans->{dir}/en/ " .
             "-o $trans->{dir}/$self->{lang} ".
-            "-s $self->{path_po}/$self->{lang}$trans->{suffix} -r"
+            "-s $self->{path_po}/$self->{lang}$trans->{suffix} -r " .
+            (
+                @$files
+                    ? '-f ' . join ' -f ', @$files
+                    : ''
+            )
     }
 }
 
 
 sub update_tmpl {
-    my $self = shift;
+    my ($self, $files) = @_;
 
     say "Update templates" if $self->{verbose};
     for my $trans ( @{$self->{interface}} ) {
@@ -338,7 +361,12 @@ sub update_tmpl {
         system
             "$self->{process} update " .
             "-i $trans->{dir}/en/ " .
-            "-s $self->{path_po}/$self->{lang}$trans->{suffix} -r"
+            "-s $self->{path_po}/$self->{lang}$trans->{suffix} -r " .
+            (
+                @$files
+                    ? '-f ' . join ' -f ', @$files
+                    : ''
+            )
     }
 }
 
@@ -356,7 +384,7 @@ sub create_prefs {
 
 
 sub create_tmpl {
-    my $self = shift;
+    my ($self, $files) = @_;
 
     say "Create templates\n" if $self->{verbose};
     for my $trans ( @{$self->{interface}} ) {
@@ -368,15 +396,20 @@ sub create_tmpl {
         system
             "$self->{process} create " .
             "-i $trans->{dir}/en/ " .
-            "-s $self->{path_po}/$self->{lang}$trans->{suffix} -r"
+            "-s $self->{path_po}/$self->{lang}$trans->{suffix} -r " .
+            (
+                @$files
+                    ? '-f ' . join ' -f ', @$files
+                    : ''
+            )
     }
 }
 
 
 sub install {
-    my $self = shift;
+    my ($self, $files) = @_;
     return unless $self->{lang};
-    $self->install_tmpl() unless $self->{pref_only};
+    $self->install_tmpl($files) unless $self->{pref_only};
     $self->install_prefs();
 }
 
@@ -391,20 +424,20 @@ sub get_all_langs {
 
 
 sub update {
-    my $self = shift;
+    my ($self, $files) = @_;
     my @langs = $self->{lang} ? ($self->{lang}) : $self->get_all_langs();
     for my $lang ( @langs ) {
         $self->set_lang( $lang );
-        $self->update_tmpl() unless $self->{pref_only};
+        $self->update_tmpl($files) unless $self->{pref_only};
         $self->update_prefs();
     }
 }
 
 
 sub create {
-    my $self = shift;
+    my ($self, $files) = @_;
     return unless $self->{lang};
-    $self->create_tmpl() unless $self->{pref_only};
+    $self->create_tmpl($files) unless $self->{pref_only};
     $self->create_prefs();
 }