From 6a0ef149665556d651a42f585930f38caffa98c9 Mon Sep 17 00:00:00 2001 From: Guillaume Rousse <guillaume.rousse@renater.fr> Date: Tue, 11 Feb 2020 14:01:56 +0100 Subject: [PATCH] fix automatic lang detection --- lib/AccountManager/App.pm | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/AccountManager/App.pm b/lib/AccountManager/App.pm index 9b3b4bf..3a71b37 100644 --- a/lib/AccountManager/App.pm +++ b/lib/AccountManager/App.pm @@ -68,25 +68,25 @@ sub new { my $lang; my $cookies = CGI::Simple::Cookie->fetch(); - if ($lang = $self->{cgi}->param('lang')) { + if ($self->{cgi}->param('lang')) { + $lang = $self->{cgi}->param('lang'); + $self->{lh} = AccountManager::L10N->get_handle($lang); $self->{logger}->debugf("setting language from parameter: %s", $lang); - } elsif ($lang = $cookies->{lang} ? $cookies->{lang}->value() : undef) { + } elsif ($cookies->{lang}) { + $lang = $cookies->{lang}->value(); + $self->{lh} = AccountManager::L10N->get_handle($lang); $self->{logger}->debugf("setting language from cookie: %s", $lang); } elsif ($lang = $ENV{HTTP_ACCEPT_LANGUAGE}) { + $lang = I18N::LangTags::Detect::detect(); + if ($lang =~ /^(\w\w)-(\w\w)$/) { + $lang = $1; + } + $self->{lh} = AccountManager::L10N->get_handle($lang); $self->{logger}->debugf("setting language from HTTP_ACCEPT_LANGUAGE header: %s", $lang); } else { + $self->{lh} = AccountManager::L10N->get_handle('en'); $self->{logger}->debugf("using default language"); } - $self->{lh} = AccountManager::L10N->get_handle($lang ? $lang: ()); - if (!$self->{lh}) { - $self->{logger}->fatal("Unable to get suitable language handle"); - $self->respond( - template => 'errors.tt2.html', - data => { - errors => [ 'internal' ] - } - ); - } $self->{lh}->load_custom_lexicon($args{custom_l10n}); if (!$self->{configuration}->{mailer}) { -- GitLab