]> source.dussan.org Git - nextcloud-server.git/commitdiff
Improve l10n.pl
authorJakob Sack <kde@jakobsack.de>
Wed, 10 Aug 2011 10:34:49 +0000 (12:34 +0200)
committerJakob Sack <kde@jakobsack.de>
Wed, 10 Aug 2011 10:34:49 +0000 (12:34 +0200)
 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 [deleted file]
core/l10n/xgettextfiles [deleted file]
help/l10n/xgettextfiles [deleted file]
l10n/l10n.pl
log/l10n/xgettextfiles [deleted file]
settings/l10n/xgettextfiles [deleted file]

diff --git a/admin/l10n/xgettextfiles b/admin/l10n/xgettextfiles
deleted file mode 100644 (file)
index 37acbc2..0000000
+++ /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 (file)
index b5d83a8..0000000
+++ /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 (file)
index a24bcc8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../templates/index.php 
index b993727e8f1ad5ec1197bcdf1faf87a33d9db8e4..736a7bc04351951fc3d53d00b4fbe5dfd6bccaa4 100644 (file)
@@ -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 = ();
diff --git a/log/l10n/xgettextfiles b/log/l10n/xgettextfiles
deleted file mode 100644 (file)
index a24bcc8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../templates/index.php 
diff --git a/settings/l10n/xgettextfiles b/settings/l10n/xgettextfiles
deleted file mode 100644 (file)
index 8a2f185..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-../templates/index.php
-../ajax/changepassword.php
-../ajax/setlanguage.php
\ No newline at end of file