From e064e53aa318bdfa43e62105e56f390f19a309f4 Mon Sep 17 00:00:00 2001 From: Jakob Sack Date: Thu, 1 Aug 2013 19:13:52 +0200 Subject: [PATCH] Save the plural information given in po files --- l10n/l10n.pl | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/l10n/l10n.pl b/l10n/l10n.pl index 9e5caa6badb..2a02e19c714 100644 --- a/l10n/l10n.pl +++ b/l10n/l10n.pl @@ -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 "