summaryrefslogtreecommitdiff
path: root/intltool-extract.in
diff options
context:
space:
mode:
authorDanilo Segan <danilo@canonical.com>2011-10-08 15:49:14 +0200
committerDanilo Segan <danilo@canonical.com>2011-10-08 15:49:14 +0200
commitb9f7f501f21f61190e5bda78d2d1534c1be9ed46 (patch)
tree7c7116b1576110608e42a8466841615f0ce11a2f /intltool-extract.in
parent44a49f91913944fbd55f758dba5ef509c2405239 (diff)
downloadintltool-b9f7f501f21f61190e5bda78d2d1534c1be9ed46.tar.gz
Keep the original ordering of messages and update tests to reflect it.
Diffstat (limited to 'intltool-extract.in')
-rw-r--r--intltool-extract.in40
1 files changed, 24 insertions, 16 deletions
diff --git a/intltool-extract.in b/intltool-extract.in
index 6cdcd52..15cd622 100644
--- a/intltool-extract.in
+++ b/intltool-extract.in
@@ -55,6 +55,7 @@ my $OUTFILE;
my $gettext_type = "";
my $input;
my %messages = ();
+my @messages_sorted = ();
my %loc = ();
my %count = ();
my %comments = ();
@@ -77,7 +78,7 @@ GetOptions (
"update" => \$UPDATE_ARG,
"quiet|q" => \$QUIET_ARG,
"srcdir=s" => \$SRCDIR_ARG,
- "nomsgctxt" => \$NOMSGCTXT_ARG,
+ "nomsgctxt" => \$NOMSGCTXT_ARG,
) or &error;
&split_on_argument;
@@ -265,20 +266,27 @@ sub escape
return join "", map &escape_char, split //, $string;
}
+sub add_message
+{
+ my ($string) = @_;
+ push @messages_sorted, $string if !defined $messages{$string};
+ $messages{$string} = [];
+}
+
sub type_ini {
### For generic translatable desktop files ###
while ($input =~ /^(#(.+)\n)?^_.*=(.*)$/mg) {
if (defined($2)) {
$comments{$3} = $2;
}
- $messages{$3} = [];
+ add_message($3);
}
}
sub type_keys {
### For generic translatable mime/keys files ###
while ($input =~ /^\s*_\w+=(.*)$/mg) {
- $messages{$1} = [];
+ add_message($1);
}
}
@@ -340,7 +348,7 @@ sub getAttributeString
## differences from intltool-merge.in.in
if ($key =~ /^_/) {
$comments{entity_decode($string)} = $XMLCOMMENT if $XMLCOMMENT;
- $messages{entity_decode($string)} = [];
+ add_message(entity_decode($string));
$$translate = 2;
}
## differences end here from intltool-merge.in.in
@@ -457,7 +465,7 @@ sub traverse
if ($lookup && $translate != 2) {
$comments{$lookup} = $XMLCOMMENT if $XMLCOMMENT;
- $messages{$lookup} = [];
+ add_message($lookup);
} elsif ($translate == 2) {
translate_subnodes($fh, \@all, $language, 1, $spacepreserve);
}
@@ -646,7 +654,7 @@ sub type_schemas {
my $currentcomment = shift @eachcomment;
next if !$_;
s/\s+/ /g;
- $messages{entity_decode_minimal($_)} = [];
+ add_message(entity_decode_minimal($_));
$comments{entity_decode_minimal($_)} = $currentcomment if (defined($currentcomment));
}
}
@@ -669,7 +677,7 @@ sub type_rfc822deb {
for my $str (@str_list)
{
$strcount++;
- $messages{$str} = [];
+ add_message($str);
$loc{$str} = $lineno;
$count{$str} = $strcount;
my $usercomment = '';
@@ -737,7 +745,7 @@ sub type_quoted {
my $before = $`;
$message =~ s/\\\"/\"/g;
$before =~ s/[^\n]//g;
- $messages{$message} = [];
+ add_message($message);
$loc{$message} = length ($before) + 2;
}
}
@@ -749,7 +757,7 @@ sub type_quotedxml {
$message =~ s/\\\"/\"/g;
$message = entity_decode($message);
$before =~ s/[^\n]//g;
- $messages{$message} = [];
+ add_message($message);
$loc{$message} = length ($before) + 2;
}
}
@@ -763,12 +771,12 @@ sub type_glade {
# Glade sometimes uses tags that normally mark translatable things for
# little bits of non-translatable content. We work around this by not
# translating strings that only includes something like label4 or window1.
- $messages{entity_decode($2)} = [] unless $2 =~ /^(window|label|dialog)[0-9]+$/;
+ add_message(entity_decode($2)) unless $2 =~ /^(window|label|dialog)[0-9]+$/;
}
while ($input =~ /<items>(..[^<]*)<\/items>/sg) {
for my $item (split (/\n/, $1)) {
- $messages{entity_decode($item)} = [];
+ add_message(entity_decode($item));
}
}
@@ -779,14 +787,14 @@ sub type_glade {
if (defined($2)) {
$message = entity_decode($2) . "\004" . $message;
}
- $messages{$message} = [];
+ add_message($message);
if (defined($3)) {
$comments{$message} = entity_decode($3) ;
}
}
}
while ($input =~ /<atkaction\s+action_name="([^>]*)"\s+description="([^>]+)"\/>/sg) {
- $messages{entity_decode_minimal($2)} = [];
+ add_message(entity_decode_minimal($2));
}
}
@@ -799,7 +807,7 @@ sub type_scheme {
if (substr($line,$i,1) eq "\"") {
if ($state == 2) {
$comments{$str} = $trcomment if ($trcomment);
- $messages{$str} = [];
+ add_message($str);
$str = '';
$state = 0; $trcomment = "";
} elsif ($state == 1) {
@@ -914,7 +922,7 @@ sub type_tlk {
if (defined $message) {
use Encode;
Encode::from_to ($message, "iso-8859-1", "UTF-8");
- $messages{$message} = [];
+ add_message($message);
if ($message =~ /^Bad Strref$/ ) {
$comments{$message} = "DO NOT Translate this Entry.";
$comments{$message} .= "\nTLK:position=$count";
@@ -941,7 +949,7 @@ sub msg_write {
}
else
{
- @msgids = sort keys %messages;
+ @msgids = @messages_sorted;
}
for my $message (@msgids)
{