From 7b63e4ca09f58b3b056bd2b8f2d8a4157537f274 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Fri, 19 Feb 2016 20:14:06 +0100 Subject: [PATCH] Apply the locale to all categories and move autolocale to Utils.php --- application/Utils.php | 25 +++++++++++++++++++++++++ index.php | 22 +--------------------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/application/Utils.php b/application/Utils.php index 10d6069..91e28a6 100644 --- a/application/Utils.php +++ b/application/Utils.php @@ -213,3 +213,28 @@ function space2nbsp($text) function format_description($description, $redirector) { return nl2br(space2nbsp(text2clickable($description, $redirector))); } + +/** + * Sniff browser language to set the locale automatically. + * Note that is may not work on your server if the corresponding locale is not installed. + * + * @param string $headerLocale Locale send in HTTP headers (e.g. "fr,fr-fr;q=0.8,en;q=0.5,en-us;q=0.3"). + **/ +function autoLocale($headerLocale) +{ + // Default if browser does not send HTTP_ACCEPT_LANGUAGE + $attempts = array('en_US'); + if (isset($headerLocale)) { + // (It's a bit crude, but it works very well. Preferred language is always presented first.) + if (preg_match('/([a-z]{2})-?([a-z]{2})?/i', $headerLocale, $matches)) { + $loc = $matches[1] . (!empty($matches[2]) ? '_' . strtoupper($matches[2]) : ''); + $attempts = array( + $loc.'.UTF-8', $loc, str_replace('_', '-', $loc).'.UTF-8', str_replace('_', '-', $loc), + $loc . '_' . strtoupper($loc).'.UTF-8', $loc . '_' . strtoupper($loc), + $loc . '_' . $loc.'.UTF-8', $loc . '_' . $loc, $loc . '-' . strtoupper($loc).'.UTF-8', + $loc . '-' . strtoupper($loc), $loc . '-' . $loc.'.UTF-8', $loc . '-' . $loc + ); + } + } + setlocale(LC_ALL, $attempts); +} \ No newline at end of file diff --git a/index.php b/index.php index 3a63319..30e49cb 100644 --- a/index.php +++ b/index.php @@ -268,7 +268,7 @@ $GLOBALS['redirector'] = !empty($GLOBALS['redirector']) ? escape($GLOBALS['redir // a token depending of deployment salt, user password, and the current ip define('STAY_SIGNED_IN_TOKEN', sha1($GLOBALS['hash'].$_SERVER["REMOTE_ADDR"].$GLOBALS['salt'])); -autoLocale(); // Sniff browser language and set date format accordingly. +autoLocale($_SERVER['HTTP_ACCEPT_LANGUAGE']); // Sniff browser language and set date format accordingly. header('Content-Type: text/html; charset=utf-8'); // We use UTF-8 for proper international characters handling. //================================================================================================== @@ -315,26 +315,6 @@ function setup_login_state() { } $userIsLoggedIn = setup_login_state(); - -// ------------------------------------------------------------------------------------------ -// Sniff browser language to display dates in the right format automatically. -// (Note that is may not work on your server if the corresponding local is not installed.) -function autoLocale() -{ - $attempts = array('en_US'); // Default if browser does not send HTTP_ACCEPT_LANGUAGE - if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) // e.g. "fr,fr-fr;q=0.8,en;q=0.5,en-us;q=0.3" - { // (It's a bit crude, but it works very well. Preferred language is always presented first.) - if (preg_match('/([a-z]{2})-?([a-z]{2})?/i',$_SERVER['HTTP_ACCEPT_LANGUAGE'],$matches)) { - $loc = $matches[1] . (!empty($matches[2]) ? '_' . strtoupper($matches[2]) : ''); - $attempts = array($loc.'.UTF-8', $loc, str_replace('_', '-', $loc).'.UTF-8', str_replace('_', '-', $loc), - $loc . '_' . strtoupper($loc).'.UTF-8', $loc . '_' . strtoupper($loc), - $loc . '_' . $loc.'.UTF-8', $loc . '_' . $loc, $loc . '-' . strtoupper($loc).'.UTF-8', - $loc . '-' . strtoupper($loc), $loc . '-' . $loc.'.UTF-8', $loc . '-' . $loc); - } - } - setlocale(LC_TIME, $attempts); // LC_TIME = Set local for date/time format only. -} - // ------------------------------------------------------------------------------------------ // PubSubHubbub protocol support (if enabled) [UNTESTED] // (Source: http://aldarone.fr/les-flux-rss-shaarli-et-pubsubhubbub/ )