diff -r 83fd6cf37084 -r 3c10fdd8ccce po2i18n.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/po2i18n.pl Mon Jan 28 17:39:51 2008 +0100 @@ -0,0 +1,156 @@ +#!/usr/bin/perl +# +# po2i18n - Convert plugin po files in into i18n.c-format +# +# See the README file for copyright information and how to reach the author. +# + +use strict; +use warnings; + +my @LANGS = ( + "en_US", + "de_DE", + "sl_SI", + "it_IT", + "nl_NL", + "pt_PT", + "fr_FR", + "nn_NO", + "fi_FI", + "pl_PL", + "es_ES", + "el_GR", + "sv_SE", + "ro_RO", + "hu_HU", + "ca_ES", + "ru_RU", + "hr_HR", + "et_EE", + "da_DK", + "cs_CZ", + "tr_TR" + ); + +my %VERS = ( + "en_US" => 10200, + "de_DE" => 10200, + "sl_SI" => 10200, + "it_IT" => 10200, + "nl_NL" => 10200, + "pt_PT" => 10200, + "fr_FR" => 10200, + "nn_NO" => 10200, + "fi_FI" => 10200, + "pl_PL" => 10200, + "es_ES" => 10200, + "el_GR" => 10200, + "sv_SE" => 10200, + "ro_RO" => 10200, + "hu_HU" => 10200, + "ca_ES" => 10200, + "ru_RU" => 10302, + "hr_HR" => 10307, + "et_EE" => 10313, + "da_DK" => 10316, + "cs_CZ" => 10342, + "tr_TR" => 10502 + ); + + +my %strings; + +foreach my $lang (@LANGS) { $strings{$lang} = { }; } + + +sub LoadLanguage(*) { + my ($lang) = @_; + + if (!open FILE, "<", "po/$lang.po") { + return 0; + } + + my $msgid = ""; + my $msgstr = ""; + my $last = 0; # 0=init, 1=msgid was last, 2=msgstr was last + + while () { + chomp; + my $line = $_; + + if ($line =~ /^msgid "(.*)"$/) { + if ($last eq 2) { + $strings{$lang}->{$msgid} = $msgstr; + $strings{"en_US"}->{$msgid} = $msgid; + } + $msgid = $1; + $last = 1; + } elsif ($line =~ /^msgstr "(.*)"/) { + $msgstr = $1; + $last = 2; + } elsif ($line =~ /^"(.*)"/) { + if ($last eq 1) { + $msgid = $msgid . $1; + } elsif ($last eq 2) { + $msgstr = $msgstr . $1; + } + } + } + if ($last eq 2) { + $strings{$lang}->{$msgid} = $msgstr; + $strings{"en_US"}->{$msgid} = $msgid; + } + + close FILE; +} + + + +foreach my $lang (@LANGS) { + LoadLanguage($lang); +} + +my @msgids = sort keys %{$strings{"en_US"}}; + + +my $silent = 0; + +while (<>) { + my $line = $_; + + if ($line =~ /^\/\/ START I18N/) { + print "// START I18N - automatically generated by po2i18n.pl\n"; + for my $msgid (@msgids) { + next if $msgid eq ""; + + my $head = " { "; + my $endif = ""; + my $versnum = 10200; + + for my $lang (@LANGS) { + if ($VERS{$lang} ne $versnum) { + $versnum = $VERS{$lang}; + print $endif; + print "#if VDRVERSNUM >= $versnum\n"; + $endif = "#endif\n"; + } + my $msgstr = $strings{$lang}->{$msgid}; + $msgstr = "" if !defined $msgstr; + + print "$head\"$msgstr\",\n"; + $head = " "; + } + print $endif; + print " },\n"; + } + $silent = 1; + } + + if (!$silent) { print $line; } + + if ($line =~ /^\/\/ END I18N/) { + print "// END I18N - automatically generated by po2i18n.pl\n"; + $silent = 0; + } +}