mirror of
https://bitbucket.org/jsuto/piler.git
synced 2025-06-13 01:37:02 +02:00
use the browsers language preferences instead of the settings page
This commit is contained in:
@ -5,13 +5,32 @@ class Language {
|
||||
|
||||
|
||||
public function __construct () {
|
||||
global $langs;
|
||||
|
||||
$lang = '';
|
||||
|
||||
if(isset($_SESSION['lang'])) {
|
||||
$file = DIR_LANGUAGE . $_SESSION['lang'] . '/messages.php';
|
||||
} else {
|
||||
$file = DIR_LANGUAGE . LANG . '/messages.php';
|
||||
}
|
||||
else {
|
||||
$pref_langs = $this->get_preferred_languages();
|
||||
|
||||
while(list($k, $v) = each($pref_langs)) {
|
||||
if(in_array($v, $langs)) {
|
||||
$lang = $v;
|
||||
define('LANG', $lang);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if($lang == '') { $lang = DEFAULT_LANG; }
|
||||
|
||||
$_SESSION['lang'] = $lang;
|
||||
|
||||
$file = DIR_LANGUAGE . $lang . '/messages.php';
|
||||
}
|
||||
|
||||
if (file_exists($file)) {
|
||||
if(file_exists($file)) {
|
||||
$_ = array();
|
||||
|
||||
require($file);
|
||||
@ -25,6 +44,29 @@ class Language {
|
||||
}
|
||||
|
||||
|
||||
private function get_preferred_languages() {
|
||||
$langs = array();
|
||||
|
||||
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
|
||||
|
||||
$l = explode(";", $_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
||||
|
||||
while(list($k, $v) = each($l)) {
|
||||
$a = explode(",", $v);
|
||||
|
||||
if(isset($a[0]) && substr($a[0], 0, 2) != 'q=') {
|
||||
array_push($langs, $a[0]);
|
||||
}
|
||||
if(isset($a[1])) { array_push($langs, $a[1]); }
|
||||
}
|
||||
}
|
||||
|
||||
array_push($langs, DEFAULT_LANG);
|
||||
|
||||
return $langs;
|
||||
}
|
||||
|
||||
|
||||
public function get($key) {
|
||||
return (isset($this->data[$key]) ? $this->data[$key] : $key);
|
||||
}
|
||||
|
Reference in New Issue
Block a user