X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=scripts%2Flocales.pl;h=0780a49f6ecf8514c36eed112f1a47ce687babc0;hb=919aac7928355937d6eedf8df4da56808ebd4eb9;hp=2174c2d819042c183ac064785706ecbed79369eb;hpb=22b2ad7f224ef0a3e160ed9f302274d2f625f240;p=kivitendo-erp.git diff --git a/scripts/locales.pl b/scripts/locales.pl index 2174c2d81..0780a49f6 100755 --- a/scripts/locales.pl +++ b/scripts/locales.pl @@ -6,6 +6,7 @@ # this version of locles processes not only all required .pl files # but also all parse_html_templated files. +use utf8; use strict; use Data::Dumper; @@ -30,6 +31,7 @@ parse_args(); my $basedir = "../.."; my $locales_dir = "."; my $bindir = "$basedir/bin/mozilla"; +my @progdirs = ( "$basedir/SL" ); my $dbupdir = "$basedir/sql/Pg-upgrade"; my $dbupdir2 = "$basedir/sql/Pg-upgrade2"; my $menufile = "menu.ini"; @@ -40,11 +42,38 @@ my ($ALL_HEADER, $MISSING_HEADER, $LOST_HEADER); init(); -opendir DIR, "$bindir" or die "$!"; -my @progfiles = grep { /\.pl$/ && !/(_custom|^\.)/ } readdir DIR; -seekdir DIR, 0; -my @customfiles = grep /_custom/, readdir DIR; -closedir DIR; +sub find_files { + my ($dir_name, $files) = @_; + + $files ||= []; + + my @dirs_to_check; + + opendir my $dir, $dir_name or die "$! $dir_name"; + + foreach my $name (readdir $dir) { + next if $name eq '.' || $name eq '..'; + + my $full_name = "${dir_name}/${name}"; + if (-d $full_name) { + push @dirs_to_check, $full_name; + } else { + push @{ $files }, $full_name; + } + } + + closedir $dir; + + map { find_files($_, $files) } @dirs_to_check; + + return @{ $files }; +} + +my @bindir_files = find_files($bindir); +my @progfiles = map { m:^(.+)/([^/]+)$:; [ $2, $1 ] } grep { /\.pl$/ && !/_custom/ } @bindir_files; +my @customfiles = grep /_custom/, @bindir_files; + +push @progfiles, map { m:^(.+)/([^/]+)$:; [ $2, $1 ] } grep { /\.pm$/ } map { find_files($_) } @progdirs; # put customized files into @customfiles my @menufiles; @@ -85,9 +114,12 @@ if (-f "$locales_dir/lost") { unlink "$locales_dir/lost"; } +my $charset = slurp("$locales_dir/charset") || 'utf-8'; +chomp $charset; + my %old_texts = %{ $self->{texts} || {} }; -map({ handle_file($_, $bindir); } @progfiles); +map({ handle_file(@{ $_ }); } @progfiles); map({ handle_file($_, $dbupdir); } @dbplfiles); map({ handle_file($_, $dbupdir2); } @dbplfiles2); @@ -158,7 +190,7 @@ EOL EOL $LOST_HEADER = <) { + last if /^\s*__END__/; + $line_no++; # is this another file @@ -335,7 +369,7 @@ sub scanfile { } # is this a template call? - if (/parse_html_template2?\s*\(\s*[\"\']([\w\/]+)\s*[\"\']/) { + if (/(?:parse_html_template2?|render)\s*\(\s*[\"\']([\w\/]+)\s*[\"\']/) { my $newfile = "$basedir/templates/webpages/$1.html"; if (/parse_html_template2/) { print "E: " . strip_base($file) . " is still using 'parse_html_template2' for " . strip_base($newfile) . ".\n"; @@ -471,26 +505,26 @@ sub scanhtmlfile { while ($line =~ m/\[\%[^\w]*(\w+)\.\w+\(/g) { my $plugin = $1; - $plugins{needed}->{$plugin} = 1 if (first { $_ eq $plugin } qw(HTML LxERP JavaScript MultiColumnIterator)); + $plugins{needed}->{$plugin} = 1 if (first { $_ eq $plugin } qw(HTML LxERP JavaScript MultiColumnIterator L)); } while ($line =~ m/(?: # Start von Variante 1: LxERP.t8('...'); ohne darumliegende [% ... %]-Tags (LxERP\.t8)\( # LxERP.t8( ::Parameter $1:: - ([\'\"]) # Anfang des zu übersetzenden Strings ::Parameter $2:: - (.*?) # Der zu übersetzende String ::Parameter $3:: - (?', $file or die "$! : $file"; + open my $fh, '>:encoding(utf8)', $file or die "$! : $file"; + + $charset =~ s/\r?\n//g; + my $emacs_charset = lc $charset; - print $fh "#!/usr/bin/perl\n# -*- coding: iso-8859-15; -*-\n\n"; + print $fh "#!/usr/bin/perl\n# -*- coding: $emacs_charset; -*-\n# vim: fenc=$charset\n\nuse utf8;\n\n"; print $fh $header, "\n" if $header; print $fh "$data_name = $delim[0]\n" if $data_name; @@ -608,6 +645,11 @@ sub generate_file { close $fh; } +sub slurp { + my $file = shift; + do { local ( @ARGV, $/ ) = $file; <> } +} + __END__ =head1 NAME