From: Michael Tremer Date: Sat, 30 Aug 2014 19:10:32 +0000 (+0200) Subject: webif: Find correct language file when locale is in format xx_XX.utf8 X-Git-Tag: v2.17-core87~103^2~51^2~29 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b02ba841b3f984f9a49dbc2db0e753ace52bb0b9;p=ipfire-2.x.git webif: Find correct language file when locale is in format xx_XX.utf8 --- diff --git a/config/cfgroot/header.pl b/config/cfgroot/header.pl index acccfc8347..cf895bf246 100644 --- a/config/cfgroot/header.pl +++ b/config/cfgroot/header.pl @@ -59,12 +59,12 @@ if ($ENV{'SERVER_ADDR'} && $ENV{'HTTPS'} ne 'on') { &General::readhash("${swroot}/main/settings", \%settings); &General::readhash("${swroot}/ethernet/settings", \%ethsettings); &General::readhash("${swroot}/ppp/settings", \%pppsettings); -$language = $settings{'LANGUAGE'}; $hostname = $settings{'HOSTNAME'}; $hostnameintitle = 0; ### Initialize language -if ($language =~ /^(\w+)$/) {$language = $1;} +require "${swroot}/lang.pl"; +$language = &Lang::FindWebLanguage($settings{"LANGUAGE"}); ### Read English Files if ( -d "/var/ipfire/langs/en/" ) { diff --git a/config/cfgroot/lang.pl b/config/cfgroot/lang.pl index 707b28d11e..3b001ad9d4 100644 --- a/config/cfgroot/lang.pl +++ b/config/cfgroot/lang.pl @@ -50,8 +50,8 @@ $language = $settings{'LANGUAGE'}; # (it is a developper options) # sub reload { + my $LG = &FindWebLanguage(shift); - my ($LG) = @_; %Lang::tr = (); # start with a clean array # Use CacheLang if present & not empty. @@ -157,4 +157,23 @@ sub BuildCacheLang { &General::log ("WARNING: cannot build cachelang file for [$missed].") if ($error); return $error; } + +sub FindWebLanguage() { + my $lang = shift; + + my @options = ($lang); + + my ($shortlang, $encoding) = split(/\./, $lang); + push(@options, $shortlang); + + my ($language, $country) = split(/_/, $shortlang); + push(@options, $language); + + foreach my $option (@options) { + return $option if (-e "${General::swroot}/langs/$option.pl"); + } + + return undef; +} + 1;