Fix locale setup
The CLI must not try to use HTTP_ACCEPT_LANGUAGE. Avoided double try-catch blocks. refs #6073
This commit is contained in:
parent
e3c70bec6d
commit
81b144d057
|
@ -507,24 +507,33 @@ abstract class ApplicationBootstrap
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setup internationalization using gettext
|
* Detect the locale
|
||||||
*
|
*
|
||||||
* Uses the preferred language sent by the browser or the default one
|
* @return null|string
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
protected function setupInternationalization()
|
protected function detectLocale()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set up internationalization using gettext
|
||||||
|
*
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
protected final function setupInternationalization()
|
||||||
{
|
{
|
||||||
if ($this->hasLocales()) {
|
if ($this->hasLocales()) {
|
||||||
Translator::registerDomain(Translator::DEFAULT_DOMAIN, $this->getLocaleDir());
|
Translator::registerDomain(Translator::DEFAULT_DOMAIN, $this->getLocaleDir());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$locale = $this->detectLocale();
|
||||||
|
if ($locale === null) {
|
||||||
|
$locale = Translator::DEFAULT_LOCALE;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Translator::setupLocale(
|
Translator::setupLocale($locale);
|
||||||
isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])
|
|
||||||
? Translator::getPreferredLocaleCode($_SERVER['HTTP_ACCEPT_LANGUAGE'])
|
|
||||||
: Translator::DEFAULT_LOCALE
|
|
||||||
);
|
|
||||||
} catch (Exception $error) {
|
} catch (Exception $error) {
|
||||||
Logger::error($error);
|
Logger::error($error);
|
||||||
}
|
}
|
||||||
|
|
|
@ -313,25 +313,16 @@ class Web extends ApplicationBootstrap
|
||||||
*
|
*
|
||||||
* @return self
|
* @return self
|
||||||
*/
|
*/
|
||||||
protected function setupInternationalization()
|
protected function detectLocale()
|
||||||
{
|
{
|
||||||
parent::setupInternationalization();
|
|
||||||
|
|
||||||
$auth = Manager::getInstance();
|
$auth = Manager::getInstance();
|
||||||
|
if (! $auth->isAuthenticated()
|
||||||
if ($auth->isAuthenticated() &&
|
|| ($locale = $auth->getUser()->getPreferences()->getValue('icingaweb', 'language')) === null
|
||||||
($locale = $auth->getUser()->getPreferences()->getValue('icingaweb', 'language')) !== null
|
&& isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])
|
||||||
) {
|
) {
|
||||||
try {
|
$locale = Translator::getPreferredLocaleCode($_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
||||||
Translator::setupLocale($locale);
|
|
||||||
} catch (Exception $error) {
|
|
||||||
Logger::warning(
|
|
||||||
'Cannot set locale "' . $locale . '" configured in ' .
|
|
||||||
'preferences of user "' . $this->user->getUsername() . '"'
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
return $locale;
|
||||||
return $this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue