X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=locale%2Fde%2Flocales.pl;h=5cde35d5a322b332c803a748abf43034135c42d4;hb=5dd059ffbe9317acf466ad70610513ded8ad1c6f;hp=f5cd120b0d3e9a236a52b3057b002c0acd61a6de;hpb=07d3f9e216ae112930a78dafaeef3cb10ee14236;p=kivitendo-erp.git diff --git a/locale/de/locales.pl b/locale/de/locales.pl index f5cd120b0..5cde35d5a 100755 --- a/locale/de/locales.pl +++ b/locale/de/locales.pl @@ -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 = ) { + chomp($line); + + while ("" ne $line) { + if (!$copying) { + if ($line =~ m||i) { + my $eom = $+[0]; + if ($` =~ /$submitsearch/) { + $issubmit = 1 + } + substr($line, 0, $eom) = ""; + $copying = 1; + } else { + $line = ""; + } + + } else { + if ($line =~ m||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 = ) { + chomp($line); + if ("" eq $line) { + print(OUT "\n"); + next; + } + + while ("" ne $line) { + if (!$copying) { + if ($line =~ m||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||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); +}