diff options
author | Jakob Sack <kde@jakobsack.de> | 2011-08-10 14:34:49 +0400 |
---|---|---|
committer | Jakob Sack <kde@jakobsack.de> | 2011-08-10 14:34:49 +0400 |
commit | ae862ddf6994955217b26bdc0dcf37c9973c64be (patch) | |
tree | 40ae73de0af501359442bfce2f5dcb63cd1ff9fb /l10n | |
parent | 58ab3883b940f7c651185217049cfdc68c9f985c (diff) |
Improve l10n.pl
o more information
o drop l10n/xgettextfiles
o read all php and js files inside a folder that has a "l10n" folder
Diffstat (limited to 'l10n')
-rw-r--r-- | l10n/l10n.pl | 66 |
1 files changed, 57 insertions, 9 deletions
diff --git a/l10n/l10n.pl b/l10n/l10n.pl index b993727e8f1..736a7bc0435 100644 --- a/l10n/l10n.pl +++ b/l10n/l10n.pl @@ -5,7 +5,28 @@ use Cwd; use Data::Dumper; use File::Path; -sub crawl{ +sub crawlPrograms{ + my( $dir, $ignore ) = @_; + my @found = (); + + opendir( DIR, $dir ); + my @files = readdir( DIR ); + closedir( DIR ); + + foreach my $i ( @files ){ + next if substr( $i, 0, 1 ) eq '.'; + if( $i eq 'l10n' && !$ignore ){ + push( @found, $dir ); + } + elsif( -d $dir.'/'.$i ){ + push( @found, crawlPrograms( $dir.'/'.$i )); + } + } + + return @found; +} + +sub crawlFiles{ my( $dir ) = @_; my @found = (); @@ -15,17 +36,31 @@ sub crawl{ foreach my $i ( @files ){ next if substr( $i, 0, 1 ) eq '.'; + if( -d $dir.'/'.$i ){ - push( @found, crawl( $dir.'/'.$i )); + push( @found, crawlFiles( $dir.'/'.$i )); } - elsif( $i eq 'xgettextfiles' ){ - push( @found, $dir ); + else{ + push(@found,$dir.'/'.$i) if $i =~ /\.js$/ || $i =~ /\.php$/; } } return @found; } +sub readIgnorelist{ + return () unless -e 'l10n/ignorelist'; + my %ignore = (); + open(IN,'l10n/ignorelist'); + while(<IN>){ + my $line = $_; + chomp($line); + $ignore{"./$line"}++; + } + close(IN); + return %ignore; +} + my $task = shift( @ARGV ); my $place = '..'; @@ -36,7 +71,7 @@ my $whereami = cwd(); die( "Program must be executed in a l10n-folder called 'l10n'" ) unless $whereami =~ m/\/l10n$/; # Where are i18n-files? -my @dirs = crawl( $place ); +my @dirs = crawlPrograms( $place, 1 ); # Languages rmtree( 'templates' ); @@ -51,28 +86,41 @@ foreach my $i ( @files ){ } if( $task eq 'read' ){ + print "Mode: reading\n"; foreach my $dir ( @dirs ){ my @temp = split( /\//, $dir ); - pop( @temp ); my $app = pop( @temp ); chdir( $dir ); + my @totranslate = crawlFiles('.'); + my %ignore = readIgnorelist(); my $output = "${whereami}/templates/$app.pot"; - `xgettext --files-from=xgettextfiles --output="$output" --keyword=t`; + print " Processing $app\n"; + + foreach my $file ( @totranslate ){ + next if $ignore{$file}; + my $keyword = ( $file =~ /\.js$/ ? 't:2' : 't'); + my $language = ( $file =~ /\.js$/ ? 'C' : 'PHP'); + my $joinexisting = ( -e $output ? '--join-existing' : ''); + print " Reading $file\n"; + `xgettext --output="$output" $joinexisting --keyword=$keyword --language=$language "$file"`; + } chdir( $whereami ); } } elsif( $task eq 'write' ){ + print "Mode: write\n"; foreach my $dir ( @dirs ){ my @temp = split( /\//, $dir ); - pop( @temp ); my $app = pop( @temp ); - chdir( $dir ); + chdir( $dir.'/l10n' ); + print " Processing $app\n"; foreach my $language ( @languages ){ next if $language eq 'templates'; my $input = "${whereami}/$language/$app.po"; next unless -e $input; + print " Language $language\n"; my $array = Locale::PO->load_file_asarray( $input ); # Create array my @strings = (); |