From b02ba841b3f984f9a49dbc2db0e753ace52bb0b9 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 30 Aug 2014 21:10:32 +0200 Subject: [PATCH] webif: Find correct language file when locale is in format xx_XX.utf8 --- config/cfgroot/header.pl | 4 ++-- config/cfgroot/lang.pl | 21 ++++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/config/cfgroot/header.pl b/config/cfgroot/header.pl index acccfc834..cf895bf24 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 707b28d11..3b001ad9d 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;