From a0ce0340d0f95514008cfac751fe58748bbadd88 Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Thu, 20 Mar 2008 00:04:16 +0000 Subject: * Switched indent used in Perl-code and settings files from tabs to 4 spaces. May need some manual corrections here and there, but should basically be ok. git-svn-id: http://svn.openslx.org/svn/openslx/openslx/trunk@1658 95ad53e4-c205-0410-b2fa-d234c58c8868 --- bin/devel-tools/extractTranslations.pl | 242 ++++++++++++++++----------------- 1 file changed, 121 insertions(+), 121 deletions(-) (limited to 'bin/devel-tools/extractTranslations.pl') diff --git a/bin/devel-tools/extractTranslations.pl b/bin/devel-tools/extractTranslations.pl index eab71f04..789a70ad 100755 --- a/bin/devel-tools/extractTranslations.pl +++ b/bin/devel-tools/extractTranslations.pl @@ -11,8 +11,8 @@ # General information about OpenSLX can be found at http://openslx.org/ # ----------------------------------------------------------------------------- # extractTranslations.pl -# - OpenSLX-script to extract translatable strings from other scripts -# and modules. +# - OpenSLX-script to extract translatable strings from other scripts +# and modules. # ----------------------------------------------------------------------------- use strict; use warnings; @@ -36,34 +36,34 @@ use Pod::Usage; use OpenSLX::Utils; my ( - $helpReq, - $show, - $update, - $verbose, - $versionReq, - - %translatableStrings, - $fileCount, + $helpReq, + $show, + $update, + $verbose, + $versionReq, + + %translatableStrings, + $fileCount, ); GetOptions( - 'help|?' => \$helpReq, - 'update' => \$update, - 'show' => \$show, - 'verbose' => \$verbose, - 'version' => \$versionReq, + 'help|?' => \$helpReq, + 'update' => \$update, + 'show' => \$show, + 'verbose' => \$verbose, + 'version' => \$versionReq, ) or pod2usage(2); pod2usage(-msg => $abstract, -verbose => 0, -exitval => 1) if $helpReq; if ($versionReq) { - system('slxversion'); - exit 1; + system('slxversion'); + exit 1; } # chdir to the repository's root folder: use FindBin; my $path = "$FindBin::RealBin/../.."; chdir($path) - or die "can't chdir to repository-root <$path> ($!)"; + or die "can't chdir to repository-root <$path> ($!)"; print "searching in ".cwd()."\n"; find(\&ExtractTrStrings, '.'); @@ -72,122 +72,122 @@ my $trCount = scalar keys %translatableStrings; print "Found $trCount translatable strings in $fileCount files.\n"; if ($show) { - foreach my $tr (sort {lc($a) cmp lc($b)} keys %translatableStrings) { - print "\tqq{$tr}\n\t\t=> qq{$tr}\n"; - } + foreach my $tr (sort {lc($a) cmp lc($b)} keys %translatableStrings) { + print "\tqq{$tr}\n\t\t=> qq{$tr}\n"; + } } if ($update) { - find(\&UpdateTrModule, 'lib/OpenSLX/Translations'); + find(\&UpdateTrModule, 'lib/OpenSLX/Translations'); } exit; sub ExtractTrStrings { - $File::Find::prune = 1 if ($_ eq '.svn' - || $_ eq 'Translations' - || $_ eq 'devel-tools'); - return if -d; - my $text = slurpFile($_); - if ($File::Find::name !~ m[\.pm$] && $text !~ m[^#!.+/perl]im) { - # ignore anything other than perl-modules and -scripts - return; - } - print "$File::Find::name...\n"; - $fileCount++; - while($text =~ m[_tr\s*\(\s*(.+?)\s*\);]gos) { - # NOTE: that cheesy regex relies on the string ');' not being used - # inside of translatable strings... so SLX_DONT_DO_THAT! - # As an alternative, we could implement a real parser, but - # I'd like to postpone that until the current scheme proves - # simply not good enough. - my $tr = $1; - if (!($tr =~ m[^'([^']+)'\s*(,.+?)*\s*$]os - || $tr =~ m[^\"([^"]+)\"\s*(,.+?)*\s*$]os - || $tr =~ m{^qq?\[([^\]]+)\]\s*(,.+?)*\s*$}os)) { - die "$File::Find::name: could not parse _tr()-argument \n" - ."\t$tr\nPlease correct and retry.\n"; - } - $tr = $1; - if ($tr =~ m[(\$\w+)]) { - die "$File::Find::name: _tr()-argument\n\t$tr\n" - ."contains variable '$1'.\nPlease correct and retry.\n"; - } - $tr =~ s[\n][\\n]g; - $tr =~ s[\t][\\t]g; - $translatableStrings{$tr} = $tr; - print "\t$tr\n" if $verbose; - } + $File::Find::prune = 1 if ($_ eq '.svn' + || $_ eq 'Translations' + || $_ eq 'devel-tools'); + return if -d; + my $text = slurpFile($_); + if ($File::Find::name !~ m[\.pm$] && $text !~ m[^#!.+/perl]im) { + # ignore anything other than perl-modules and -scripts + return; + } + print "$File::Find::name...\n"; + $fileCount++; + while($text =~ m[_tr\s*\(\s*(.+?)\s*\);]gos) { + # NOTE: that cheesy regex relies on the string ');' not being used + # inside of translatable strings... so SLX_DONT_DO_THAT! + # As an alternative, we could implement a real parser, but + # I'd like to postpone that until the current scheme proves + # simply not good enough. + my $tr = $1; + if (!($tr =~ m[^'([^']+)'\s*(,.+?)*\s*$]os + || $tr =~ m[^\"([^"]+)\"\s*(,.+?)*\s*$]os + || $tr =~ m{^qq?\[([^\]]+)\]\s*(,.+?)*\s*$}os)) { + die "$File::Find::name: could not parse _tr()-argument \n" + ."\t$tr\nPlease correct and retry.\n"; + } + $tr = $1; + if ($tr =~ m[(\$\w+)]) { + die "$File::Find::name: _tr()-argument\n\t$tr\n" + ."contains variable '$1'.\nPlease correct and retry.\n"; + } + $tr =~ s[\n][\\n]g; + $tr =~ s[\t][\\t]g; + $translatableStrings{$tr} = $tr; + print "\t$tr\n" if $verbose; + } } sub UpdateTrModule { - $File::Find::prune = 1 if ($_ eq '.svn'); - return if -d || !/.pm$/; - print "updating $File::Find::name...\n"; - my $trModule = $_; - my $useKeyAsTranslation = ($trModule eq 'posix.pm'); - my $text = slurpFile($trModule); - if ($text !~ m[%translations\s*=\s*\(\s*(.+)\s*\);]os) { - print "\t*** No translations found - file will be skipped! ***\n"; - return; - } - my %translations; - # evaluate the hash read from file into %translations: - if (!eval "$&") { - print "\t*** translations can't be evaluated - file will be skipped! ***\n"; - return; - } - my $updatedTranslations = "%translations = (\n"; - my $keepCount = 0; - my $newCount = 0; - foreach my $tr (sort {lc($a) cmp lc($b)} keys %translatableStrings) { - if (!length($translations{$tr})) { - if ($useKeyAsTranslation) { - # POSIX language (English): use key as translation: - $updatedTranslations - .= "\tq{$tr}\n\t=>\n\tqq{$tr},\n\n"; - $newCount++; - } else { - # no translation available, we mark the key, such that a - # search for this key will fall back to the english message: - my $trMark = "NEW:$tr"; - if (exists $translations{$trMark}) { - # the marked string already exists, we keep the translation - # if any (usually, of course, there is none): - my $trValue = $translations{$trMark}; - $trValue =~ s[\n][\\n]g; - $trValue =~ s[\t][\\t]g; - $updatedTranslations - .= "\tq{$trMark}\n\t=>\n\tqq{$trValue},\n\n"; - $keepCount++; - } else { - $updatedTranslations - .= "\tq{$trMark}\n\t=>\n\tqq{},\n\n"; - $newCount++; - } - } - } else { - # use existing translation for key: - my $trValue = $translations{$tr}; - $trValue =~ s[\n][\\n]g; - $trValue =~ s[\t][\\t]g; - $updatedTranslations - .= "\tq{$tr}\n\t=>\n\tqq{$trValue},\n\n"; - $keepCount++; - } - } - my $delCount = scalar(keys %translations) - $keepCount; - $text =~ s[%translations\s*=\s*\(\s*(.+)\s*\);] - [$updatedTranslations);]os; - if ($newCount + $delCount) { - chomp $text; - spitFile($trModule, $text."\n"); - print "\tadded $newCount strings, kept $keepCount and removed $delCount.\n"; - } else { - print "\tnothing changed\n"; - } + $File::Find::prune = 1 if ($_ eq '.svn'); + return if -d || !/.pm$/; + print "updating $File::Find::name...\n"; + my $trModule = $_; + my $useKeyAsTranslation = ($trModule eq 'posix.pm'); + my $text = slurpFile($trModule); + if ($text !~ m[%translations\s*=\s*\(\s*(.+)\s*\);]os) { + print "\t*** No translations found - file will be skipped! ***\n"; + return; + } + my %translations; + # evaluate the hash read from file into %translations: + if (!eval "$&") { + print "\t*** translations can't be evaluated - file will be skipped! ***\n"; + return; + } + my $updatedTranslations = "%translations = (\n"; + my $keepCount = 0; + my $newCount = 0; + foreach my $tr (sort {lc($a) cmp lc($b)} keys %translatableStrings) { + if (!length($translations{$tr})) { + if ($useKeyAsTranslation) { + # POSIX language (English): use key as translation: + $updatedTranslations + .= "\tq{$tr}\n\t=>\n\tqq{$tr},\n\n"; + $newCount++; + } else { + # no translation available, we mark the key, such that a + # search for this key will fall back to the english message: + my $trMark = "NEW:$tr"; + if (exists $translations{$trMark}) { + # the marked string already exists, we keep the translation + # if any (usually, of course, there is none): + my $trValue = $translations{$trMark}; + $trValue =~ s[\n][\\n]g; + $trValue =~ s[\t][\\t]g; + $updatedTranslations + .= "\tq{$trMark}\n\t=>\n\tqq{$trValue},\n\n"; + $keepCount++; + } else { + $updatedTranslations + .= "\tq{$trMark}\n\t=>\n\tqq{},\n\n"; + $newCount++; + } + } + } else { + # use existing translation for key: + my $trValue = $translations{$tr}; + $trValue =~ s[\n][\\n]g; + $trValue =~ s[\t][\\t]g; + $updatedTranslations + .= "\tq{$tr}\n\t=>\n\tqq{$trValue},\n\n"; + $keepCount++; + } + } + my $delCount = scalar(keys %translations) - $keepCount; + $text =~ s[%translations\s*=\s*\(\s*(.+)\s*\);] + [$updatedTranslations);]os; + if ($newCount + $delCount) { + chomp $text; + spitFile($trModule, $text."\n"); + print "\tadded $newCount strings, kept $keepCount and removed $delCount.\n"; + } else { + print "\tnothing changed\n"; + } } __END__ -- cgit v1.2.3-55-g7522