X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=locale%2Fde%2Flocales.pl;h=6fd6e80e1acc4b07cc0de89ef9f2a34fc6a200dd;hb=7fc5e2cca0f322632f6409092b962174062fb83a;hp=580c6052f00b812b86386009ebf76293533364c0;hpb=24119b61074bc5f9b27f0e0c917c8a7e528e2152;p=kivitendo-erp.git diff --git a/locale/de/locales.pl b/locale/de/locales.pl index 580c6052f..6fd6e80e1 100755 --- a/locale/de/locales.pl +++ b/locale/de/locales.pl @@ -10,6 +10,8 @@ use POSIX; use FileHandle; use Data::Dumper; +use List::Util qw(first); + $| = 1; $basedir = "../.."; @@ -62,6 +64,8 @@ if (-f 'all') { require "all"; } +my %old_texts = %{ $self->{texts} }; + # Read HTML templates. #%htmllocale = (); #@htmltemplates = <../../templates/webpages/*/*_master.html>; @@ -120,7 +124,9 @@ sub handle_file { open FH, ">$file" or die "$! : $file"; - print FH q|$self->{texts} = { + print FH q|#!/usr/bin/perl + +$self->{texts} = { |; foreach $key (sort keys %locale) { @@ -188,7 +194,9 @@ $self->{subs} = { open FH, ">all" or die "$! : all"; -print FH q|# These are all the texts to build the translations files. +print FH q|#!/usr/bin/perl + +# These are all the texts to build the translations files. # The file has the form of 'english text' => 'foreign text', # you can add the translation in this file or in the 'missing' file # run locales.pl from this directory to rebuild the translation files @@ -225,7 +233,9 @@ close FH; if (@missing) { open FH, ">missing" or die "$! : missing"; - print FH q|# add the missing texts and run locales.pl to rebuild + print FH q|#!/usr/bin/perl + +# add the missing texts and run locales.pl to rebuild $missing = { |; @@ -243,6 +253,38 @@ $missing = { } +@lost = (); + +if (-f "lost") { + require "lost"; + unlink "lost"; +} + +while (($text, $translation) = each %old_texts) { + next if ($alllocales{$text}); + + push @lost, { 'text' => $text, 'translation' => $translation }; +} + +if (scalar @lost) { + splice @lost, 0, (scalar @lost - 50) if (scalar @lost > 50); + + open FH, ">lost"; + print FH "#!/usr/bin/perl\n\n" . + "# The last 50 texts that have been removed.\n" . + "# This file will be auto-generated by locales.pl. Do not edit it.\n\n" . + "\@lost = (\n"; + + foreach $entry (@lost) { + $entry->{text} =~ s/\'/\\\'/; + $entry->{translation} =~ s/\'/\\\'/; + print FH " { 'text' => '$entry->{text}', 'translation' => '$entry->{translation}' },\n"; + } + + print FH ");\n\n1;\n"; + close FH; +} + open(FH, "LANGUAGE"); @language = ; close(FH); @@ -319,6 +361,9 @@ sub scanfile { my $dont_include_subs = shift; my $scanned_files = shift; + # sanitize file + $file =~ s=/+=/=g; + $scanned_files = {} unless ($scanned_files); return if ($scanned_files->{$file}); $scanned_files->{$file} = 1; @@ -475,9 +520,10 @@ sub scanmenu { sub scanhtmlfile { local *IN; - + if (!defined $cached{$_[0]}) { - + my %plugins = ( 'loaded' => { }, 'needed' => { } ); + open(IN, $_[0]) || die $_[0]; my $copying = 0; @@ -486,6 +532,15 @@ sub scanhtmlfile { while (my $line = ) { chomp($line); + while ($line =~ m/\[\%[^\w]*use[^\w]+(\w+)[^\w]*?\%\]/gi) { + $plugins{loaded}->{$1} = 1; + } + + while ($line =~ m/\[\%[^\w]*(\w+)\.\w+\(/g) { + my $plugin = $1; + $plugins{needed}->{$plugin} = 1 if (first { $_ eq $plugin } qw(HTML LxERP JavaScript MultiColumnIterator)); + } + while ("" ne $line) { if (!$copying) { if ($line =~ m||i) { @@ -526,6 +581,12 @@ sub scanhtmlfile { } close(IN); + + foreach my $plugin (keys %{ $plugins{needed} }) { + next if ($plugins{loaded}->{$plugin}); + print "E: " . strip_base($_[0]) . " requires the Template plugin '$plugin', but is not loaded with '[\% USE $plugin \%]'.\n"; + } + &converthtmlfile($_[0]); } @@ -634,8 +695,10 @@ sub search_translated_htmlfiles_wo_master { } sub strip_base { - $_[0] =~ s|^../../||; - $_[0] =~ s|templates/webpages/||; + my $s = "$_[0]"; # Create a copy of the string. + + $s =~ s|^../../||; + $s =~ s|templates/webpages/||; - return $_[0]; + return $s; }