Wenn noch gar kein Passwort fuer den Admin gesetzt ist, dann Login zulassen.
[kivitendo-erp.git] / locale / de / locales.pl
index f5cd120..5cde35d 100755 (executable)
@@ -2,11 +2,17 @@
 
 # -n do not include custom_ scripts
 
+# this version of locles processes not only all required .pl files
+# but also all parse_html_templated files.
+
+use POSIX;
 use FileHandle;
+use Data::Dumper;
 
 $basedir  = "../..";
 $bindir   = "$basedir/bin/mozilla";
 $menufile = "menu.ini";
+$submitsearch = qr/type\s*=\s*["']?submit/i;
 
 foreach $item (@ARGV) {
   $item =~ s/-//g;
@@ -14,7 +20,7 @@ foreach $item (@ARGV) {
 }
 
 opendir DIR, "$bindir" or die "$!";
-@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR;
+@progfiles = grep { /\.pl$/ && !/(_|^\.)/ } readdir DIR;
 seekdir DIR, 0;
 @customfiles = grep /_/, readdir DIR;
 closedir DIR;
@@ -36,6 +42,13 @@ if (-f 'all') {
   require "all";
 }
 
+# Read HTML templates.
+#%htmllocale = ();
+#@htmltemplates = <../../templates/webpages/*/*_master.html>;
+#foreach $file (@htmltemplates) {
+#  scanhtmlfile($file);
+#}
+
 foreach $file (@progfiles) {
 
   %locale = ();
@@ -72,7 +85,7 @@ foreach $file (@progfiles) {
   unlink 'missing';
 
   foreach $text (keys %$missing) {
-    if ($locale{$text}) {
+    if ($locale{$text} || $htmllocale{$text}) {
       unless ($self{texts}{$text}) {
         $self{texts}{$text} = $missing->{$text};
       }
@@ -140,6 +153,10 @@ $self{subs} = {
   close FH;
 }
 
+foreach $file (@htmltemplates) {
+  converthtmlfile($file);
+}
+
 # now print out all
 
 open FH, ">all" or die "$! : all";
@@ -284,6 +301,15 @@ sub scanfile {
       &scanfile("$bindir/$newfile");
     }
 
+    # is this a template call?
+    if (/parse_html_template\s*\(\s*["']([\w\/]+)/) {
+      my $newfile = "$basedir/templates/webpages/$1_master.html";
+      if (-f $newfile) {
+        &scanhtmlfile($newfile);
+        &converthtmlfile($newfile);
+      }
+    }
+
     # is this a sub ?
     if (/^sub /) {
       ($null, $subrt) = split / +/;
@@ -305,7 +331,7 @@ sub scanfile {
       my $postmatch = "";
 
       # is it a submit button before $locale->
-      if (/type\s*=\s*submit/i) {
+      if (/$submitsearch/) {
         $postmatch = $';
         if ($` !~ /\$locale->text/) {
           $is_submit   = 1;
@@ -379,3 +405,109 @@ sub scanmenu {
 
 }
 
+sub scanhtmlfile {
+  local *IN;
+
+  open(IN, $_[0]) || die $_[0];
+
+  my $copying = 0;
+  my $issubmit = 0;
+  my $text = "";
+  while (my $line = <IN>) {
+    chomp($line);
+
+    while ("" ne $line) {
+      if (!$copying) {
+        if ($line =~ m|<translate>|i) {
+          my $eom = $+[0];
+          if ($` =~ /$submitsearch/) {
+            $issubmit = 1
+          }
+          substr($line, 0, $eom) = "";
+          $copying = 1;
+        } else {
+          $line = "";
+        }
+
+      } else {
+        if ($line =~ m|</translate>|i) {
+          $text .= $`;
+          substr($line, 0, $+[0]) = "";
+          
+          $copying = 0; 
+          if ($issubmit) {
+            $submit{$text} = 1;
+            $issubmit = 0;
+          }
+          $alllocales{$text} = 1;
+          $htmllocale{$text} = 1;
+          $text = "";
+
+        } else {
+          $text .= $line;
+          $line = "";
+        }
+      }
+    }
+  }
+
+  close(IN);
+}
+
+sub converthtmlfile {
+  local *IN;
+  local *OUT;
+
+  my $file = shift;
+
+  open(IN, $file) || die;
+
+  my $langcode = (split("/", getcwd()))[-1];
+  $file =~ s/_master.html$/_${langcode}.html/;
+
+  open(OUT, ">$file") || die;
+
+  my $copying = 0;
+  my $text = "";
+  while (my $line = <IN>) {
+    chomp($line);
+    if ("" eq $line) {
+      print(OUT "\n");
+      next;
+    }
+
+    while ("" ne $line) {
+      if (!$copying) {
+        if ($line =~ m|<translate>|i) {
+          print(OUT $`);
+          substr($line, 0, $+[0]) = "";
+          $copying = 1;
+          print(OUT "\n") if ("" eq $line);
+
+        } else {
+          print(OUT "${line}\n");
+          $line = "";
+        }
+
+      } else {
+        if ($line =~ m|</translate>|i) {
+          $text .= $`;
+          substr($line, 0, $+[0]) = "";
+          $copying = 0;
+          $alllocales{$text} = 1;
+          $htmllocale{$text} = 1;
+          print(OUT $self{"texts"}{$text});
+          print(OUT "\n") if ("" eq $line);
+          $text = "";
+
+        } else {
+          $text .= $line;
+          $line = "";
+        }
+      }
+    }
+  }
+
+  close(IN);
+  close(OUT);
+}