]> source.dussan.org Git - nextcloud-server.git/commitdiff
Save the plural information given in po files
authorJakob Sack <mail@jakobsack.de>
Thu, 1 Aug 2013 17:13:52 +0000 (19:13 +0200)
committerJakob Sack <mail@jakobsack.de>
Thu, 1 Aug 2013 17:13:52 +0000 (19:13 +0200)
l10n/l10n.pl

index 9e5caa6badb34d656806ebc29a8fc54848040fa4..2a02e19c714f48ddf32933af2dea80108ca2f071 100644 (file)
@@ -64,6 +64,16 @@ sub readIgnorelist{
        return %ignore;
 }
 
+sub getPluralInfo {
+       my( $info ) = @_;
+
+       # get string
+       $info =~ s/.*Plural-Forms: (.+)\\n.*/$1/;
+       $info =~ s/^(.*)\\n.*/$1/g;
+
+       return $info;
+}
+
 my $task = shift( @ARGV );
 my $place = '..';
 
@@ -132,11 +142,15 @@ elsif( $task eq 'write' ){
                        my $array = Locale::PO->load_file_asarray( $input );
                        # Create array
                        my @strings = ();
-                       foreach my $string ( @{$array} ){
-                               next if $string->msgid() eq '""';
+                       my $plurals;
 
-                               # Do we use singular or plural?
-                               if( defined( $string->msgstr_n() )){
+                       foreach my $string ( @{$array} ){
+                               if( $string->msgid() eq '""' ){
+                                       # Translator information
+                                       $plurals = getPluralInfo( $string->msgstr());
+                               }
+                               elsif( defined( $string->msgstr_n() )){
+                                       # plural translations
                                        my @variants = ();
                                        my $identifier = $string->msgid()."::".$string->msgid_plural();
                                        $identifier =~ s/"/_/g;
@@ -148,6 +162,7 @@ elsif( $task eq 'write' ){
                                        push( @strings, "\"$identifier\" => array(".join(@variants, ",").")");
                                }
                                else{
+                                       # singular translations
                                        next if $string->msgstr() eq '""';
                                        push( @strings, $string->msgid()." => ".$string->msgstr());
                                }
@@ -158,7 +173,7 @@ elsif( $task eq 'write' ){
                        open( OUT, ">$language.php" );
                        print OUT "<?php \$TRANSLATIONS = array(\n";
                        print OUT join( ",\n", @strings );
-                       print OUT "\n);\n";
+                       print OUT "\n); \$PLURAL_FORMS = \"$plurals\";\n";
                        close( OUT );
                }
                chdir( $whereami );