From 61993419ecc16a7aa7046186e29e1dc92cf71cb7 Mon Sep 17 00:00:00 2001 From: Jakob Sack Date: Mon, 20 Jun 2011 21:54:21 +0200 Subject: [PATCH] New i18n-structure --- .../javascript.php => ajax/translations.php} | 0 log/l10n/da.po => l10n/da/log.po | 0 core/l10n/de.po => l10n/de/core.po | 0 log/l10n/de.po => l10n/de/log.po | 0 l10n/l10n.pl | 104 ++++++++++++++++++ core/l10n/nl.po => l10n/nl/core.po | 0 log/l10n/messages.pot => l10n/nl/log.po | 0 settings/l10n/nl.po => l10n/nl/settings.po | 0 .../messages.pot => l10n/templates/admin.pot | 0 .../messages.pot => l10n/templates/core.pot | 0 log/l10n/nl.po => l10n/templates/log.pot | 0 .../templates/settings.pot | 0 lib/l10n.php | 8 +- log/l10n/log | 4 - 14 files changed, 108 insertions(+), 8 deletions(-) rename core/{l10n/javascript.php => ajax/translations.php} (100%) rename log/l10n/da.po => l10n/da/log.po (100%) rename core/l10n/de.po => l10n/de/core.po (100%) rename log/l10n/de.po => l10n/de/log.po (100%) create mode 100644 l10n/l10n.pl rename core/l10n/nl.po => l10n/nl/core.po (100%) rename log/l10n/messages.pot => l10n/nl/log.po (100%) rename settings/l10n/nl.po => l10n/nl/settings.po (100%) rename admin/l10n/messages.pot => l10n/templates/admin.pot (100%) rename core/l10n/messages.pot => l10n/templates/core.pot (100%) rename log/l10n/nl.po => l10n/templates/log.pot (100%) rename settings/l10n/messages.pot => l10n/templates/settings.pot (100%) delete mode 100644 log/l10n/log diff --git a/core/l10n/javascript.php b/core/ajax/translations.php similarity index 100% rename from core/l10n/javascript.php rename to core/ajax/translations.php diff --git a/log/l10n/da.po b/l10n/da/log.po similarity index 100% rename from log/l10n/da.po rename to l10n/da/log.po diff --git a/core/l10n/de.po b/l10n/de/core.po similarity index 100% rename from core/l10n/de.po rename to l10n/de/core.po diff --git a/log/l10n/de.po b/l10n/de/log.po similarity index 100% rename from log/l10n/de.po rename to l10n/de/log.po 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 "localizations = array_merge( $this->localizations, $LOCALIZATIONS ); } @@ -231,8 +231,8 @@ class OC_L10N{ global $SERVERROOT; // find the i18n dir - $i18ndir = $SERVERROOT.'/l10n/'; - if( $app != 'core' && $app != '' ){ + $i18ndir = $SERVERROOT.'/core/l10n/'; + if( $app != '' ){ // Check if the app is in the app folder if( file_exists( $SERVERROOT.'/apps/'.$app.'/l10n/' )){ $i18ndir = $SERVERROOT.'/apps/'.$app.'/l10n/'; diff --git a/log/l10n/log b/log/l10n/log deleted file mode 100644 index f70eb6af3fe..00000000000 --- a/log/l10n/log +++ /dev/null @@ -1,4 +0,0 @@ -[General] -LangCode=de -ProjectID=oc_log -TargetLangCode=de