From ae862ddf6994955217b26bdc0dcf37c9973c64be Mon Sep 17 00:00:00 2001 From: Jakob Sack Date: Wed, 10 Aug 2011 12:34:49 +0200 Subject: [PATCH] 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 --- admin/l10n/xgettextfiles | 5 --- core/l10n/xgettextfiles | 7 ---- help/l10n/xgettextfiles | 1 - l10n/l10n.pl | 66 ++++++++++++++++++++++++++++++++----- log/l10n/xgettextfiles | 1 - settings/l10n/xgettextfiles | 3 -- 6 files changed, 57 insertions(+), 26 deletions(-) delete mode 100644 admin/l10n/xgettextfiles delete mode 100644 core/l10n/xgettextfiles delete mode 100644 help/l10n/xgettextfiles delete mode 100644 log/l10n/xgettextfiles delete mode 100644 settings/l10n/xgettextfiles diff --git a/admin/l10n/xgettextfiles b/admin/l10n/xgettextfiles deleted file mode 100644 index 37acbc25de..0000000000 --- a/admin/l10n/xgettextfiles +++ /dev/null @@ -1,5 +0,0 @@ -../templates/app.php -../templates/app_noconn.php -../templates/apps.php -../templates/system.php -../templates/users.php diff --git a/core/l10n/xgettextfiles b/core/l10n/xgettextfiles deleted file mode 100644 index b5d83a880d..0000000000 --- a/core/l10n/xgettextfiles +++ /dev/null @@ -1,7 +0,0 @@ -../templates/404.php -../templates/installation.php -../templates/layout.guest.php -../templates/login.php -../templates/logout.php -../templates/part.pagenavi.php -../templates/part.searchbox.php diff --git a/help/l10n/xgettextfiles b/help/l10n/xgettextfiles deleted file mode 100644 index a24bcc89a8..0000000000 --- a/help/l10n/xgettextfiles +++ /dev/null @@ -1 +0,0 @@ -../templates/index.php diff --git a/l10n/l10n.pl b/l10n/l10n.pl index b993727e8f..736a7bc043 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(){ + 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 = (); diff --git a/log/l10n/xgettextfiles b/log/l10n/xgettextfiles deleted file mode 100644 index a24bcc89a8..0000000000 --- a/log/l10n/xgettextfiles +++ /dev/null @@ -1 +0,0 @@ -../templates/index.php diff --git a/settings/l10n/xgettextfiles b/settings/l10n/xgettextfiles deleted file mode 100644 index 8a2f185f23..0000000000 --- a/settings/l10n/xgettextfiles +++ /dev/null @@ -1,3 +0,0 @@ -../templates/index.php -../ajax/changepassword.php -../ajax/setlanguage.php \ No newline at end of file