aboutsummaryrefslogtreecommitdiffstats
path: root/l10n/l10n.pl
diff options
context:
space:
mode:
authorJakob Sack <kde@jakobsack.de>2011-08-10 12:34:49 +0200
committerJakob Sack <kde@jakobsack.de>2011-08-10 12:34:49 +0200
commitae862ddf6994955217b26bdc0dcf37c9973c64be (patch)
tree40ae73de0af501359442bfce2f5dcb63cd1ff9fb /l10n/l10n.pl
parent58ab3883b940f7c651185217049cfdc68c9f985c (diff)
downloadnextcloud-server-ae862ddf6994955217b26bdc0dcf37c9973c64be.tar.gz
nextcloud-server-ae862ddf6994955217b26bdc0dcf37c9973c64be.zip
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/l10n.pl')
-rw-r--r--l10n/l10n.pl66
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 = ();