X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/a4e96abf581a1473991e1c13ff3fdc21e8cdb9b2..4bed72f:/scripts/locales.pl?ds=inline diff --git a/scripts/locales.pl b/scripts/locales.pl index cfb85d9a4..b6665588a 100755 --- a/scripts/locales.pl +++ b/scripts/locales.pl @@ -10,6 +10,7 @@ use utf8; use strict; use Carp; +use Cwd; use Data::Dumper; use English; use File::Slurp qw(slurp); @@ -29,6 +30,7 @@ my $debug = 0; parse_args(); +my $locale; my $basedir = "../.."; my $locales_dir = "."; my $bindir = "$basedir/bin/mozilla"; @@ -36,12 +38,14 @@ my @progdirs = ( "$basedir/SL" ); my $dbupdir = "$basedir/sql/Pg-upgrade"; my $dbupdir2 = "$basedir/sql/Pg-upgrade2"; my $menufile = "menu.ini"; +my @javascript_dirs = ($basedir .'/js', $basedir .'/templates/webpages'); +my $javascript_output_dir = $basedir .'/js'; my $submitsearch = qr/type\s*=\s*[\"\']?submit/i; our $self = {}; our $missing = {}; our @lost = (); -my (%referenced_html_files, %locale, %htmllocale, %alllocales, %cached, %submit); +my (%referenced_html_files, %locale, %htmllocale, %alllocales, %cached, %submit, %jslocale); my ($ALL_HEADER, $MISSING_HEADER, $LOST_HEADER); init(); @@ -123,6 +127,10 @@ handle_file($_, $dbupdir) for @dbplfiles; handle_file($_, $dbupdir2) for @dbplfiles2; scanmenu($_) for @menufiles; +for my $file_name (map({find_files($_)} @javascript_dirs)) { + scan_javascript_file($file_name); +} + # merge entries to translate with entries from files 'missing' and 'lost' merge_texts(); @@ -134,6 +142,17 @@ generate_file( data_sub => sub { _print_line($_, $self->{texts}{$_}, @_) for sort keys %alllocales }, ); +open(my $js_file, '>:encoding(utf8)', $javascript_output_dir .'/locale/'. $locale .'.js') || die; +print $js_file 'namespace("kivi").setupLocale({'; +my $first_entry = 1; +for my $key (sort(keys(%jslocale))) { + print $js_file ((!$first_entry ? ',' : '') ."\n". _double_quote($key) .':'. _double_quote($self->{texts}{$key})); + $first_entry = 0; +} +print $js_file ("\n"); +print $js_file ('});'."\n"); +close($js_file); + foreach my $text (keys %$missing) { if ($locale{$text} || $htmllocale{$text}) { unless ($self->{texts}{$text}) { @@ -233,6 +252,9 @@ sub parse_args { my $ok = 0; foreach my $dir ("../locale/$arg", "locale/$arg", "../$arg", $arg) { next unless -d $dir && -f "$dir/all" && -f "$dir/LANGUAGE"; + + $locale = $arg; + $ok = chdir $dir; last; } @@ -247,6 +269,9 @@ sub parse_args { . "and no locale directory name was given.\n"; exit 1; } + + $locale ||= (grep { $_ } split m:/:, getcwd())[-1]; + $locale =~ s/\.+$//; } sub handle_file { @@ -392,7 +417,7 @@ sub scanfile { while ($rc) { if (/Locale/) { unless (/^use /) { - my ($null, $country) = split /,/; + my ($null, $country) = split(/,/); $country =~ s/^ +[\"\']//; $country =~ s/[\"\'].*//; } @@ -511,7 +536,7 @@ 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 JSON L P)); + $plugins{needed}->{$plugin} = 1 if (first { $_ eq $plugin } qw(HTML LxERP JavaScript JSON L P)); } $plugins{needed}->{T8} = 1 if $line =~ m/\[\%.*\|.*\$T8/; @@ -586,6 +611,31 @@ sub scanhtmlfile { $referenced_html_files{$_} = 1 for keys %{$cached{$file}{scanh}}; } +sub scan_javascript_file { + my ($file) = @_; + + open(my $fh, $file) || die('can not open file: '. $file); + + while( my $line = readline($fh) ) { + while( $line =~ m/ + kivi.t8 + \s* + \( + \s* + ([\'\"]) + (.*?) + (?