From b7c412d4d0fec7f3f54ecaa09178afa16c779d7e Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Wed, 31 Jan 2018 12:39:17 +0100 Subject: [PATCH] Use LC_COLLATE instead of LC_MESSAGES if php-intl is not installed As stated in the docs: > LC_MESSAGES for system responses (available if PHP was compiled with libintl) Fixes #1067 --- application/Languages.php | 2 ++ index.php | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/application/Languages.php b/application/Languages.php index 357c7524..3eb3388f 100644 --- a/application/Languages.php +++ b/application/Languages.php @@ -69,6 +69,8 @@ class Languages { $this->conf = $conf; $confLanguage = $this->conf->get('translation.language', 'auto'); + // Auto mode or invalid parameter, use the detected language. + // If the detected language is invalid, it doesn't matter, it will use English. if ($confLanguage === 'auto' || ! $this->isValidLanguage($confLanguage)) { $this->language = substr($language, 0, 5); } else { diff --git a/index.php b/index.php index d57789e6..2de9be0a 100644 --- a/index.php +++ b/index.php @@ -124,6 +124,11 @@ if (isset($_COOKIE['shaarli']) && !SessionManager::checkId($_COOKIE['shaarli'])) $conf = new ConfigManager(); $sessionManager = new SessionManager($_SESSION, $conf); +// LC_MESSAGES isn't defined without php-intl, in this case use LC_COLLATE locale instead. +if (! defined('LC_MESSAGES')) { + define('LC_MESSAGES', LC_COLLATE); +} + // Sniff browser language and set date format accordingly. if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { autoLocale($_SERVER['HTTP_ACCEPT_LANGUAGE']); -- 2.41.0