mirror of
https://github.com/webmin/webmin.git
synced 2026-03-20 08:40:24 +00:00
Locale can be accepted from the browser just like language
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -26,8 +26,9 @@ if (!$@) {
|
||||
$locale++;
|
||||
my $locales = &list_locales();
|
||||
my %localesrev = reverse %{$locales};
|
||||
my $locale_auto = &parse_accepted_language();
|
||||
print &ui_table_row($text{'lang_locale'},
|
||||
&ui_select("locale", $uconfig{'locale'} || "en-US",
|
||||
&ui_select("locale", $uconfig{'locale'} || $locale_auto || "en-US",
|
||||
[ map { [ $localesrev{$_}, $_ ] } sort values %{$locales} ]).
|
||||
&ui_hidden("dateformat", $uconfig{'dateformat'}));
|
||||
}
|
||||
|
||||
@@ -1993,7 +1993,8 @@ my ($secs, $only, $fmt) = @_;
|
||||
eval "use DateTime; use DateTime::Locale; use DateTime::TimeZone;";
|
||||
if (!$@) {
|
||||
my $opts = ref($only) ? $only : {};
|
||||
my $locale_name = $opts->{'locale'} || $gconfig{'locale_'.$remote_user} || $gconfig{'locale'} || 'en-US';
|
||||
my $locale_auto = &parse_accepted_language();
|
||||
my $locale_name = $opts->{'locale'} || $gconfig{'locale_'.$remote_user} || $gconfig{'locale'} || $locale_auto || 'en-US';
|
||||
my $tz = $opts->{'tz'} ||
|
||||
DateTime::TimeZone->new( name => 'local' )->name(); # Asia/Nicosia
|
||||
my $locale = DateTime::Locale->load($locale_name);
|
||||
@@ -5222,17 +5223,8 @@ $webmin_logfile = $gconfig{'webmin_log'} ? $gconfig{'webmin_log'}
|
||||
|
||||
# Load language strings into %text
|
||||
my @langs = &list_languages();
|
||||
my $accepted_lang;
|
||||
if ($gconfig{'acceptlang'}) {
|
||||
foreach my $a (split(/,/, $ENV{'HTTP_ACCEPT_LANGUAGE'})) {
|
||||
$a =~ s/;.*//; # Remove ;q=0.5 or similar
|
||||
my ($al) = grep { $_->{'lang'} eq $a } @langs;
|
||||
if ($al) {
|
||||
$accepted_lang = $al->{'lang'};
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
my $accepted_lang = &parse_accepted_language();
|
||||
|
||||
$current_lang = safe_language($force_lang ? $force_lang :
|
||||
$accepted_lang ? $accepted_lang :
|
||||
$remote_user_attrs{'lang'} ? $remote_user_attrs{'lang'} :
|
||||
@@ -12867,6 +12859,23 @@ if ($float =~ /^[-]?(\.\d+|\d+\.\d+)$/) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
sub parse_accepted_language
|
||||
{
|
||||
my @langs = &list_languages();
|
||||
my $accepted_lang;
|
||||
if ($gconfig{'acceptlang'}) {
|
||||
foreach my $a (split(/,/, $ENV{'HTTP_ACCEPT_LANGUAGE'})) {
|
||||
$a =~ s/;.*//; # Remove ;q=0.5 or similar
|
||||
my ($al) = grep { $_->{'lang'} eq $a } @langs;
|
||||
if ($al) {
|
||||
$accepted_lang = $al->{'lang'};
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $accepted_lang;
|
||||
}
|
||||
|
||||
$done_web_lib_funcs = 1;
|
||||
|
||||
1;
|
||||
|
||||
@@ -25,10 +25,11 @@ my $locale;
|
||||
eval "use DateTime; use DateTime::Locale; use DateTime::TimeZone;";
|
||||
if (!$@) {
|
||||
$locale++;
|
||||
my $locales = list_locales();
|
||||
my $locales = &list_locales();
|
||||
my %localesrev = reverse %{$locales};
|
||||
my $locale_auto = &parse_accepted_language();
|
||||
print &ui_table_row($text{'lang_locale'},
|
||||
&ui_select("locale", $gconfig{'locale'} || "en-US",
|
||||
&ui_select("locale", $gconfig{'locale'} || $locale_auto || "en-US",
|
||||
[ map { [ $localesrev{$_}, $_ ] } sort values %{$locales} ]).
|
||||
&ui_hidden("dateformat", $gconfig{'dateformat'}),
|
||||
undef, [ "valign=middle","valign=middle" ]);
|
||||
|
||||
Reference in New Issue
Block a user