7
my $moz_supported_file;
24
my $arg = shift(@ARGV);
26
$moz_supported_file = shift(@ARGV);
27
} elsif ($arg eq '-l') {
28
$lpom_dir = shift(@ARGV);
29
} elsif ($arg eq '-o') {
30
$op_dir = shift(@ARGV);
31
} elsif ($arg eq '-b') {
32
$bl_file = shift(@ARGV);
34
die "Unknown argument '$arg'";
38
(defined($moz_supported_file)) || die "Need to specify a supported language list";
40
if (defined($lpom_dir)) {
41
my $lang_file = "$lpom_dir/maps/languages";
42
my $map_file = "$lpom_dir/maps/locale2pkgname";
43
my $variant_file = "$lpom_dir/maps/variants";
45
open($file, $lang_file) or die "Failed to open $lang_file";
51
$langcode =~ s/([^:]*):*([^:]*)/$1/;
52
$lang =~ s/([^:]*):*([^:]*)/$2/;
53
if ($lang ne "") { $languages{$langcode} = $lang; }
57
open($file, $map_file) or die "Failed to open $map_file";
63
$langcode =~ s/([^:]*):*([^:]*)/$1/;
64
$pkgname =~ s/([^:]*):*([^:]*)/$2/;
65
if ($pkgname ne "") { $locale2pkgname{$langcode} = $pkgname; }
69
open($file, $variant_file) or die "Failed to open $variant_file";
75
$langcode =~ s/([^:]*):*([^:]*)/$1/;
76
$lang =~ s/([^:]*):*([^:]*)/$2/;
77
if ($lang ne "") { $languages{$langcode} = $lang; }
82
if (-e "$op_dir/locales.all") {
83
open($file, "$op_dir/locales.all");
85
if ((not $_ =~ /^$/) && (not $_ =~ /^#.*/)) {
90
$pkgname =~ s/([^:]*):*([^:]*)/$1/;
91
$lang =~ s/([^:]*):*([^:]*)/$2/;
92
$pkglist{$pkgname} = 1;
93
if ($lang ne "") { $languages{$pkgname} = $lang; }
98
if (-e "$op_dir/locales.shipped") {
99
open($file, "$op_dir/locales.shipped");
101
if ((not $_ =~ /^$/) && (not $_ =~ /^#.*/)) {
104
my $langcode = $line;
106
$langcode =~ s/([^:]*):*([^:]*)/$1/;
107
$pkgname =~ s/([^:]*):*([^:]*)/$2/;
108
if ($pkgname eq "") { die "Malformed locales.shipped file"; }
109
if (not exists $pkglist{$pkgname}) { die "WTF? Language in locales.shipped is not present in locales.all. Did we produce broken output last time?"; }
110
$locale2pkgname{lc($langcode)} = $pkgname;
116
if (defined($bl_file)) {
117
open($file, "$bl_file") or die "Failed to open $bl_file";
119
if ((not $_ =~ /^$/) && (not $_ =~ /^#.*/)) {
122
$blacklist{$line} = 1;
128
my $have_language = 0;
130
open($file, $moz_supported_file) or die "Failed to open $moz_supported_file";
131
open(my $outfile, ">$op_dir/locales.shipped");
135
my $langcode = $line;
136
my $platforms = $line;
137
$langcode =~ s/^([[:alnum:]\-]*)[[:space:]]*(.*)/$1/;
138
$platforms =~ s/^([[:alnum:]\-]*)[[:space:]]*(.*)/$2/;
139
if (($langcode eq "en-US") || (($platforms ne "") && (rindex($platforms, "linux") eq -1)) || (exists $blacklist{$langcode})) { next; }
140
my $llangcode = lc($langcode);
141
my $pkgname = $llangcode;
142
if (exists $locale2pkgname{$llangcode}) { $pkgname = $locale2pkgname{$llangcode}; }
143
if (not exists $languages{$pkgname}) {
144
if ($pkgname eq $llangcode) { $pkgname =~ s/\-.*//; }
145
if (not exists $languages{$pkgname}) { die "No description for $pkgname"; }
147
if ($have_language eq 0) { print $outfile "# List of shipped locales. This list is automatically generated. Do not edit by hand\n"; }
149
print $outfile "$langcode:$pkgname\n";
150
$pkglist{$pkgname} = 1;
153
if ($have_language eq 0) { print $outfile "# Placeholder file for the list of shipped languages. Do not delete"; }
157
open($outfile, ">$op_dir/locales.all");
158
my @completelist = keys(%pkglist);
159
if (scalar(@completelist) gt 0) {
160
@completelist = sort(@completelist);
161
print $outfile "# List of all language packs, past and present. Please don't delete any entries from this file\n";
162
foreach my $lang (@completelist) {
163
if (not exists $languages{$lang}) { die "How on earth did we get here?"; }
164
my $desc = $languages{$lang};
165
print $outfile "$lang:$desc\n";
167
} else { print $outfile "# Placeholder file for the list of all language packs. Do not delete"; }