vfmg (DEVEL): vfmg - smarter way for finding correct lang and $LAN...
sparky
sparky at pld-linux.org
Mon Oct 31 17:35:24 CET 2005
Author: sparky Date: Mon Oct 31 16:35:24 2005 GMT
Module: vfmg Tag: DEVEL
---- Log message:
- smarter way for finding correct lang and $LANGUAGE support
---- Files affected:
vfmg:
vfmg (1.73.2.12 -> 1.73.2.13)
---- Diffs:
================================================================
Index: vfmg/vfmg
diff -u vfmg/vfmg:1.73.2.12 vfmg/vfmg:1.73.2.13
--- vfmg/vfmg:1.73.2.12 Mon Oct 31 16:07:07 2005
+++ vfmg/vfmg Mon Oct 31 17:35:19 2005
@@ -122,14 +122,34 @@
# search dirs }}}
# get locale (for Name[*])
-my $lang4 = "";
-$lang4 = $ENV{'LANG'} if exists $ENV{'LANG'};
-$lang4 = $ENV{'LC_MESSAGES'} if exists $ENV{'LC_MESSAGES'};
-$lang4 = $ENV{'LC_ALL'} if exists $ENV{'LC_ALL'};
-(my $lang3 = $lang4) =~ s/@.*//;
-(my $lang2 = $lang3) =~ s/\..*//;
-(my $lang1 = $lang2) =~ s/_.*//;
-
+my @lang;
+sub addlang {
+ my $l = $_[0];
+ push @lang, $l unless grep {$_ eq $l} @lang;
+ $l =~ s/@.*//;
+ push @lang, $l unless grep {$_ eq $l} @lang;
+ $l =~ s/\..*//;
+ push @lang, $l unless grep {$_ eq $l} @lang;
+ $l =~ s/_.*//;
+ push @lang, $l unless grep {$_ eq $l} @lang;
+}
+addlang($ENV{'LC_ALL'}) if exists $ENV{'LC_ALL'};
+addlang($ENV{'LC_MESSAGES'}) if exists $ENV{'LC_MESSAGES'};
+if (exists $ENV{'LANGUAGE'}) {
+ foreach my $lang (split /:/, $ENV{'LANGUAGE'}) {
+ addlang($lang);
+ }
+}
+addlang($ENV{'LANG'}) if exists $ENV{'LANG'};
+my $langs = join "|", @lang;
+sub findfirstlang {
+ return 0 if $a eq $b;
+ foreach my $lang (@lang) {
+ return -1 if $a eq "Name[$lang]";
+ return 1 if $b eq "Name[$lang]";
+ }
+ return 0;
+}
# what is $DESKTOP_FILE_PATH?
@@ -151,7 +171,7 @@
map {
## "foo = bar" or "Name[baz] = bar"
/^\s*
- (Name(?:\[(?:$lang4|$lang3|$lang2|$lang1)\])?
+ (Name(?:\[(?:$langs)\])?
|Icon|Exec|Categories|Terminal|Type|Encoding)
\s* = \s* (.+?)
\s*$/ox
@@ -161,7 +181,7 @@
return unless lc $tags{Type} eq 'application';
$tags{_name} =
- (sort { length $b <=> length $a } grep /^Name/, keys %tags)[0];
+ (sort findfirstlang grep /^Name/, keys %tags)[0];
$tags{name} = $tags{ $tags{_name} };
$tags{enc} = exists $tags{Encoding} ? $tags{Encoding} : 'iso-8859-1';
$tags{term} =
@@ -502,13 +522,13 @@
map {
## "foo = bar" or "Name[baz] = bar"
/^\s*
- (Name(?:\[(?:$lang4|$lang3|$lang2|$lang1)\])?
+ (Name(?:\[(?:$langs)\])?
|Icon|Encoding)
\s* = \s* (.+?)
\s*$/ox
} <F_IN>,
);
- $dname = $tags{(sort { length $b <=> length $a } grep /^Name/, keys %tags)[0]};
+ $dname = $tags{(sort findfirstlang grep /^Name/, keys %tags)[0]};
$icon = $tags{Icon};
$enc = $tags{Encoding};
close F_IN;
================================================================
---- CVS-web:
http://cvs.pld-linux.org/vfmg/vfmg?r1=1.73.2.12&r2=1.73.2.13&f=u
More information about the pld-cvs-commit
mailing list