webif: Find correct language file when locale is in format xx_XX.utf8

This commit is contained in:
Michael Tremer
2014-08-30 21:10:32 +02:00
parent 165295ab28
commit b02ba841b3
2 changed files with 22 additions and 3 deletions

View File

@@ -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/" ) {

View File

@@ -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;