diff options
51 files changed, 401 insertions, 17450 deletions
diff --git a/LedgerSMB/locales.pl b/LedgerSMB/locales.pl new file mode 100755 index 00000000..0ba4e2b9 --- /dev/null +++ b/LedgerSMB/locales.pl @@ -0,0 +1,351 @@ +#!/usr/bin/perl + +# -n do not include custom_ scripts +# -a build all file +# -m do not generate missing files + +use FileHandle; + + +$basedir = "../.."; +$bindir = "$basedir/bin"; +$menufile = "menu.ini"; + +foreach $item (@ARGV) { + $item =~ s/-//g; + $arg{$item} = 1; +} + +open(FH, "LANGUAGE"); +$language = <FH>; +close(FH); +chomp $language; +$language =~ s/\((.*)\)/$1/; +$charset = $1; + +opendir DIR, "$bindir" or die "$!"; +@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; +seekdir DIR, 0; +@customfiles = grep /_/, readdir DIR; +closedir DIR; + +# put customized files into @customfiles +@customfiles = () if ($arg{n}); + +if ($arg{n}) { + @menufiles = ($menufile); +} else { + opendir DIR, "$basedir" or die "$!"; + @menufiles = grep { /.*?_$menufile$/ } readdir DIR; + closedir DIR; + unshift @menufiles, $menufile; +} + +if (-f "all") { + eval { require "all"; }; + %all = %{$self{texts}}; + %{$self{texts}} = (); +} else { + # build %all file from individual files + foreach $file (@progfiles) { + &scanfile("$bindir/$file"); + } +} + +# remove the old missing file +if (-f 'missing') { + unlink "missing"; +} + +foreach $file (@progfiles) { + + %locale = (); + %submit = (); + %subrt = (); + @missing = (); + %missing = (); + + &scanfile("$bindir/$file"); + + # scan custom_{module}.pl or {login}_{module}.pl files + foreach $customfile (@customfiles) { + if ($customfile =~ /_$file/) { + if (-f "$bindir/$customfile") { + &scanfile("$bindir/$customfile"); + } + } + } + + # if this is the menu.pl file + if ($file eq 'menu.pl') { + foreach $item (@menufiles) { + &scanmenu("$basedir/$item"); + } + } + + $file =~ s/\.pl//; + + if (-f "$file.missing") { + eval { require "$file.missing"; }; + unlink "$file.missing"; + + for (keys %$missing) { + $self{texts}{$_} ||= $missing->{$_}; + } + } + + open FH, ">$file" or die "$! : $file"; + + if ($charset) { + print FH qq|\$self{charset} = '$charset';\n\n|; + } + + print FH q|$self{texts} = { +|; + + foreach $key (sort keys %locale) { + $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; + $count++; + + $text =~ s/'/\\'/g; + $text =~ s/\\$/\\\\/; + + $keytext = $key; + $keytext =~ s/'/\\'/g; + $keytext =~ s/\\$/\\\\/; + + if (!$text) { + $notext++; + push @missing, $keytext; + next; + } + + print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; + } + + print FH q|}; + +$self{subs} = { +|; + + foreach $key (sort keys %subrt) { + $text = $key; + $text =~ s/'/\\'/g; + $text =~ s/\\$/\\\\/; + print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; + } + + foreach $key (sort keys %submit) { + $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; + next unless $text; + + $text =~ s/'/\\'/g; + $text =~ s/\\$/\\\\/; + + $english_sub = $key; + $english_sub =~ s/'/\\'/g; + $english_sub =~ s/\\$/\\\\/; + $english_sub = lc $key; + + $translated_sub = lc $text; + $english_sub =~ s/( |-|,|\/|\.$)/_/g; + $translated_sub =~ s/( |-|,|\/|\.$)/_/g; + print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; + } + + print FH q|}; + +1; + +|; + + close FH; + + if (!$arg{m}) { + if (@missing) { + open FH, ">$file.missing" or die "$! : missing"; + + print FH qq|# module $file +# add the missing texts and run locales.pl to rebuild + +\$missing = { +|; + + foreach $text (@missing) { + $text =~ s/'/\\'/g; + $text =~ s/\\$/\\\\/; + print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; + } + + print FH q|}; + +1; +|; + + close FH; + + } + } + + + # redo the all file + if ($arg{a}) { + open FH, ">all" or die "$! : all"; + + print FH q|# These are all the texts to build the translations files. +# to build unique strings edit the module files instead +# this file is just a shortcut to build strings which are the same +|; + + if ($charset) { + print FH qq|\$self{charset} = '$charset';\n\n|; + } + + print FH q| +$self{texts} = { +|; + + foreach $key (sort keys %all) { + $keytext = $key; + $keytext =~ s/'/\\'/g; + $keytext =~ s/\\$/\\\\/; + + $text = $all{$key}; + $text =~ s/'/\\'/g; + $text =~ s/\\$/\\\\/; + print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; + } + + print FH q|}; + +1; +|; + + close FH; + + } + +} + +$per = sprintf("%.1f", ($count - $notext) / $count * 100); +print "\n$language - ${per}%\n"; + +exit; +# eof + + +sub scanfile { + my ($file, $level) = @_; + + my $fh = new FileHandle; + open $fh, "$file" or die "$! : $file"; + + $file =~ s/\.pl//; + $file =~ s/$bindir\///; + + %temp = (); + for (keys %{$self{texts}}) { + $temp{$_} = $self{texts}{$_}; + } + + # read translation file if it exists + if (-f $file) { + eval { do "$file"; }; + for (keys %{$self{texts}}) { + $all{$_} ||= $self{texts}{$_}; + if ($level) { + $temp{$_} ||= $self{texts}{$_}; + } else { + $temp{$_} = $self{texts}{$_}; + } + } + } + + %{$self{texts}} = (); + for (sort keys %temp) { + $self{texts}{$_} = $temp{$_}; + } + + + while (<$fh>) { + # is this another file + if (/require\s+\W.*\.pl/) { + my $newfile = $&; + $newfile =~ s/require\s+\W//; + $newfile =~ s/\$form->{path}\///; + &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; + } + + # is this a sub ? + if (/^sub /) { + ($null, $subrt) = split / +/; + $subrt{$subrt} = 1; + next; + } + + my $rc = 1; + + while ($rc) { + if (/Locale/) { + if (!/^use /) { + my ($null, $country) = split /,/; + $country =~ s/^ +["']//; + $country =~ s/["'].*//; + } + } + + if (/\$locale->text.*?\W\)/) { + my $string = $&; + $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; + $string =~ s/\W\)+.*$//; + + # if there is no $ in the string record it + unless ($string =~ /\$\D.*/) { + # this guarantees one instance of string + $locale{$string} = 1; + + # is it a submit button before $locale-> + if (/type=submit/i) { + $submit{$string} = 1; + } + } + } + + # exit loop if there are no more locales on this line + ($rc) = ($' =~ /\$locale->text/); + # strip text + s/^.*?\$locale->text.*?\)//; + } + } + + close($fh); + +} + + +sub scanmenu { + my $file = shift; + + my $fh = new FileHandle; + open $fh, "$file" or die "$! : $file"; + + my @a = grep /^\[/, <$fh>; + close($fh); + + # strip [] + grep { s/(\[|\])//g } @a; + + foreach my $item (@a) { + $item =~ s/ *$//; + @b = split /--/, $item; + foreach $string (@b) { + chomp $string; + if ($string !~ /^\s*$/) { + $locale{$string} = 1; + } + } + } + +} + + diff --git a/locale/be_fr/locales.pl b/locale/be_fr/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/be_fr/locales.pl +++ b/locale/be_fr/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/be_nl/locales.pl b/locale/be_nl/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/be_nl/locales.pl +++ b/locale/be_nl/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/bg_utf/locales.pl b/locale/bg_utf/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/bg_utf/locales.pl +++ b/locale/bg_utf/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/br/locales.pl b/locale/br/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/br/locales.pl +++ b/locale/br/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ca_en/locales.pl b/locale/ca_en/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ca_en/locales.pl +++ b/locale/ca_en/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ca_fr/locales.pl b/locale/ca_fr/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ca_fr/locales.pl +++ b/locale/ca_fr/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ch/locales.pl b/locale/ch/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ch/locales.pl +++ b/locale/ch/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ch_utf/locales.pl b/locale/ch_utf/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ch_utf/locales.pl +++ b/locale/ch_utf/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/cn_utf/locales.pl b/locale/cn_utf/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/cn_utf/locales.pl +++ b/locale/cn_utf/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/co/locales.pl b/locale/co/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/co/locales.pl +++ b/locale/co/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/co_utf/locales.pl b/locale/co_utf/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/co_utf/locales.pl +++ b/locale/co_utf/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ct/locales.pl b/locale/ct/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ct/locales.pl +++ b/locale/ct/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/cz/locales.pl b/locale/cz/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/cz/locales.pl +++ b/locale/cz/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/de/locales.pl b/locale/de/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/de/locales.pl +++ b/locale/de/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/de_utf/locales.pl b/locale/de_utf/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/de_utf/locales.pl +++ b/locale/de_utf/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/dk/locales.pl b/locale/dk/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/dk/locales.pl +++ b/locale/dk/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ec/locales.pl b/locale/ec/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ec/locales.pl +++ b/locale/ec/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ee/locales.pl b/locale/ee/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ee/locales.pl +++ b/locale/ee/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ee_utf/locales.pl b/locale/ee_utf/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ee_utf/locales.pl +++ b/locale/ee_utf/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/eg_utf/locales.pl b/locale/eg_utf/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/eg_utf/locales.pl +++ b/locale/eg_utf/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/en_GB/locales.pl b/locale/en_GB/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/en_GB/locales.pl +++ b/locale/en_GB/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/es/locales.pl b/locale/es/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/es/locales.pl +++ b/locale/es/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/es_utf/locales.pl b/locale/es_utf/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/es_utf/locales.pl +++ b/locale/es_utf/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/fi/locales.pl b/locale/fi/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/fi/locales.pl +++ b/locale/fi/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/fi_utf/locales.pl b/locale/fi_utf/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/fi_utf/locales.pl +++ b/locale/fi_utf/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/fr/locales.pl b/locale/fr/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/fr/locales.pl +++ b/locale/fr/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/gr/locales.pl b/locale/gr/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/gr/locales.pl +++ b/locale/gr/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/hu/locales.pl b/locale/hu/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/hu/locales.pl +++ b/locale/hu/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/id/locales.pl b/locale/id/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/id/locales.pl +++ b/locale/id/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/is/locales.pl b/locale/is/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/is/locales.pl +++ b/locale/is/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/it/locales.pl b/locale/it/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/it/locales.pl +++ b/locale/it/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/lt/locales.pl b/locale/lt/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/lt/locales.pl +++ b/locale/lt/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/lv/locales.pl b/locale/lv/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/lv/locales.pl +++ b/locale/lv/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/mx/locales.pl b/locale/mx/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/mx/locales.pl +++ b/locale/mx/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/nb/locales.pl b/locale/nb/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/nb/locales.pl +++ b/locale/nb/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/nl/locales.pl b/locale/nl/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/nl/locales.pl +++ b/locale/nl/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/pa/locales.pl b/locale/pa/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/pa/locales.pl +++ b/locale/pa/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/pl/locales.pl b/locale/pl/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/pl/locales.pl +++ b/locale/pl/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/pt/locales.pl b/locale/pt/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/pt/locales.pl +++ b/locale/pt/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/py/locales.pl b/locale/py/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/py/locales.pl +++ b/locale/py/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ru/locales.pl b/locale/ru/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ru/locales.pl +++ b/locale/ru/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ru_utf/locales.pl b/locale/ru_utf/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ru_utf/locales.pl +++ b/locale/ru_utf/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/se/locales.pl b/locale/se/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/se/locales.pl +++ b/locale/se/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/sv/locales.pl b/locale/sv/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/sv/locales.pl +++ b/locale/sv/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/tr/locales.pl b/locale/tr/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/tr/locales.pl +++ b/locale/tr/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/tw_big5/locales.pl b/locale/tw_big5/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/tw_big5/locales.pl +++ b/locale/tw_big5/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/tw_utf/locales.pl b/locale/tw_utf/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/tw_utf/locales.pl +++ b/locale/tw_utf/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ua/locales.pl b/locale/ua/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ua/locales.pl +++ b/locale/ua/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ua_utf/locales.pl b/locale/ua_utf/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ua_utf/locales.pl +++ b/locale/ua_utf/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" diff --git a/locale/ve/locales.pl b/locale/ve/locales.pl index cc8d2be7..1b3bdc74 100755 --- a/locale/ve/locales.pl +++ b/locale/ve/locales.pl @@ -1,351 +1,3 @@ #!/usr/bin/perl -# -n do not include custom_ scripts -# -a build all file -# -m do not generate missing files - -use FileHandle; - - -$basedir = "../.."; -$bindir = "$basedir/bin/mozilla"; -$menufile = "menu.ini"; - -foreach $item (@ARGV) { - $item =~ s/-//g; - $arg{$item} = 1; -} - -open(FH, "LANGUAGE"); -$language = <FH>; -close(FH); -chomp $language; -$language =~ s/\((.*)\)/$1/; -$charset = $1; - -opendir DIR, "$bindir" or die "$!"; -@progfiles = grep { /\.pl/; !/(_|^\.)/ } readdir DIR; -seekdir DIR, 0; -@customfiles = grep /_/, readdir DIR; -closedir DIR; - -# put customized files into @customfiles -@customfiles = () if ($arg{n}); - -if ($arg{n}) { - @menufiles = ($menufile); -} else { - opendir DIR, "$basedir" or die "$!"; - @menufiles = grep { /.*?_$menufile$/ } readdir DIR; - closedir DIR; - unshift @menufiles, $menufile; -} - -if (-f "all") { - eval { require "all"; }; - %all = %{$self{texts}}; - %{$self{texts}} = (); -} else { - # build %all file from individual files - foreach $file (@progfiles) { - &scanfile("$bindir/$file"); - } -} - -# remove the old missing file -if (-f 'missing') { - unlink "missing"; -} - -foreach $file (@progfiles) { - - %locale = (); - %submit = (); - %subrt = (); - @missing = (); - %missing = (); - - &scanfile("$bindir/$file"); - - # scan custom_{module}.pl or {login}_{module}.pl files - foreach $customfile (@customfiles) { - if ($customfile =~ /_$file/) { - if (-f "$bindir/$customfile") { - &scanfile("$bindir/$customfile"); - } - } - } - - # if this is the menu.pl file - if ($file eq 'menu.pl') { - foreach $item (@menufiles) { - &scanmenu("$basedir/$item"); - } - } - - $file =~ s/\.pl//; - - if (-f "$file.missing") { - eval { require "$file.missing"; }; - unlink "$file.missing"; - - for (keys %$missing) { - $self{texts}{$_} ||= $missing->{$_}; - } - } - - open FH, ">$file" or die "$! : $file"; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q|$self{texts} = { -|; - - foreach $key (sort keys %locale) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - $count++; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - if (!$text) { - $notext++; - push @missing, $keytext; - next; - } - - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -$self{subs} = { -|; - - foreach $key (sort keys %subrt) { - $text = $key; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '$text',\n|; - } - - foreach $key (sort keys %submit) { - $text = ($self{texts}{$key}) ? $self{texts}{$key} : $all{$key}; - next unless $text; - - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - - $english_sub = $key; - $english_sub =~ s/'/\\'/g; - $english_sub =~ s/\\$/\\\\/; - $english_sub = lc $key; - - $translated_sub = lc $text; - $english_sub =~ s/( |-|,|\/|\.$)/_/g; - $translated_sub =~ s/( |-|,|\/|\.$)/_/g; - print FH qq| '$translated_sub'|.(' ' x (27-length($translated_sub))).qq| => '$english_sub',\n|; - } - - print FH q|}; - -1; - -|; - - close FH; - - if (!$arg{m}) { - if (@missing) { - open FH, ">$file.missing" or die "$! : missing"; - - print FH qq|# module $file -# add the missing texts and run locales.pl to rebuild - -\$missing = { -|; - - foreach $text (@missing) { - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$text'|.(' ' x (27-length($text))).qq| => '',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - } - - - # redo the all file - if ($arg{a}) { - open FH, ">all" or die "$! : all"; - - print FH q|# These are all the texts to build the translations files. -# to build unique strings edit the module files instead -# this file is just a shortcut to build strings which are the same -|; - - if ($charset) { - print FH qq|\$self{charset} = '$charset';\n\n|; - } - - print FH q| -$self{texts} = { -|; - - foreach $key (sort keys %all) { - $keytext = $key; - $keytext =~ s/'/\\'/g; - $keytext =~ s/\\$/\\\\/; - - $text = $all{$key}; - $text =~ s/'/\\'/g; - $text =~ s/\\$/\\\\/; - print FH qq| '$keytext'|.(' ' x (27-length($keytext))).qq| => '$text',\n|; - } - - print FH q|}; - -1; -|; - - close FH; - - } - -} - -$per = sprintf("%.1f", ($count - $notext) / $count * 100); -print "\n$language - ${per}%\n"; - -exit; -# eof - - -sub scanfile { - my ($file, $level) = @_; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - $file =~ s/\.pl//; - $file =~ s/$bindir\///; - - %temp = (); - for (keys %{$self{texts}}) { - $temp{$_} = $self{texts}{$_}; - } - - # read translation file if it exists - if (-f $file) { - eval { do "$file"; }; - for (keys %{$self{texts}}) { - $all{$_} ||= $self{texts}{$_}; - if ($level) { - $temp{$_} ||= $self{texts}{$_}; - } else { - $temp{$_} = $self{texts}{$_}; - } - } - } - - %{$self{texts}} = (); - for (sort keys %temp) { - $self{texts}{$_} = $temp{$_}; - } - - - while (<$fh>) { - # is this another file - if (/require\s+\W.*\.pl/) { - my $newfile = $&; - $newfile =~ s/require\s+\W//; - $newfile =~ s/\$form->{path}\///; - &scanfile("$bindir/$newfile", 1) if $newfile !~ /_/; - } - - # is this a sub ? - if (/^sub /) { - ($null, $subrt) = split / +/; - $subrt{$subrt} = 1; - next; - } - - my $rc = 1; - - while ($rc) { - if (/Locale/) { - if (!/^use /) { - my ($null, $country) = split /,/; - $country =~ s/^ +["']//; - $country =~ s/["'].*//; - } - } - - if (/\$locale->text.*?\W\)/) { - my $string = $&; - $string =~ s/\$locale->text\(\s*['"(q|qq)]['\/\\\|~]*//; - $string =~ s/\W\)+.*$//; - - # if there is no $ in the string record it - unless ($string =~ /\$\D.*/) { - # this guarantees one instance of string - $locale{$string} = 1; - - # is it a submit button before $locale-> - if (/type=submit/i) { - $submit{$string} = 1; - } - } - } - - # exit loop if there are no more locales on this line - ($rc) = ($' =~ /\$locale->text/); - # strip text - s/^.*?\$locale->text.*?\)//; - } - } - - close($fh); - -} - - -sub scanmenu { - my $file = shift; - - my $fh = new FileHandle; - open $fh, "$file" or die "$! : $file"; - - my @a = grep /^\[/, <$fh>; - close($fh); - - # strip [] - grep { s/(\[|\])//g } @a; - - foreach my $item (@a) { - $item =~ s/ *$//; - @b = split /--/, $item; - foreach $string (@b) { - chomp $string; - if ($string !~ /^\s*$/) { - $locale{$string} = 1; - } - } - } - -} - - +require "LedgerSMB/locales.pl" |