Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Sack <kde@jakobsack.de>2011-06-20 23:54:21 +0400
committerJakob Sack <kde@jakobsack.de>2011-06-20 23:54:21 +0400
commit61993419ecc16a7aa7046186e29e1dc92cf71cb7 (patch)
treec0f74dde9089ce9d4b4ce622f639ac36bcffbc6f /l10n/l10n.pl
parent557b5b4b472aafeb9a3ac0942e9259640ddd3d1f (diff)
New i18n-structure
Diffstat (limited to 'l10n/l10n.pl')
-rw-r--r--l10n/l10n.pl104
1 files changed, 104 insertions, 0 deletions
diff --git a/l10n/l10n.pl b/l10n/l10n.pl
new file mode 100644
index 00000000000..5463e34e4dc
--- /dev/null
+++ b/l10n/l10n.pl
@@ -0,0 +1,104 @@
+#!/usr/bin/perl
+use strict;
+use Locale::PO;
+use Cwd;
+use Data::Dumper;
+
+sub crawl{
+ my( $dir ) = @_;
+ my @found = ();
+
+ opendir( DIR, $dir );
+ my @files = readdir( DIR );
+ closedir( DIR );
+
+ foreach my $i ( @files ){
+ next if substr( $i, 0, 1 ) eq '.';
+ if( -d $dir.'/'.$i ){
+ push( @found, crawl( $dir.'/'.$i ));
+ }
+ elsif( $i eq 'xgettextfiles' ){
+ push( @found, $dir );
+ }
+ }
+
+ return @found;
+}
+
+my $task = shift( @ARGV );
+my $place = '..';
+
+die( "Usuage: l10n.pl task\ntask: read, write\n") unless $task && $place;
+
+# Where are i18n-files?
+my @dirs = crawl( $place );
+
+# Languages
+mkdir( 'templates' ) unless -d 'templates';
+
+my @languages = ();
+opendir( DIR, '.' );
+my @files = readdir( DIR );
+closedir( DIR );
+foreach my $i ( @files ){
+ push( @languages, $i ) if -d $i && substr( $i, 0, 1 ) ne '.';
+}
+
+# Our current position
+my $whereami = cwd();
+
+if( $task eq 'read' ){
+ foreach my $dir ( @dirs ){
+ my @temp = split( /\//, $dir );
+ pop( @temp );
+ my $app = pop( @temp );
+ chdir( $dir );
+ foreach my $language ( @languages ){
+ my $output = "${whereami}/$language/$app.po";
+ $output .= 't' if $language eq 'templates';
+
+ if( -e $output ){
+ `xgettext --files-from=xgettextfiles --join-existing --output="$output" --keyword=t`
+ }
+ else{
+ `xgettext --files-from=xgettextfiles --output="$output" --keyword=t`
+ }
+ }
+ chdir( $whereami );
+ }
+}
+elsif( $task eq 'write' ){
+ foreach my $dir ( @dirs ){
+ my @temp = split( /\//, $dir );
+ pop( @temp );
+ my $app = pop( @temp );
+ chdir( $dir );
+ foreach my $language ( @languages ){
+ next if $language eq 'templates';
+
+ my $input = "${whereami}/$language/$app.po";
+ next unless -e $input;
+
+ my $hash = Locale::PO->load_file_ashash( $input );
+
+ # Create array
+ my @strings = ();
+ foreach my $key ( keys( %{$hash} )){
+ next if $key eq '""';
+ next if $hash->{$key}->msgstr() eq '""';
+ push( @strings, $hash->{$key}->msgid()." => ".$hash->{$key}->msgstr());
+ }
+
+ # Write PHP file
+ open( OUT, ">$lang.php" );
+ print OUT "<?php \$TRANSLATIONS = array(\n";
+ print OUT join( ",\n", @strings );
+ print OUT "\n);\n";
+ close( OUT );
+ }
+ chdir( $whereami );
+ }
+}
+else{
+ print "unknown task!\n";
+}