phpmyadmin — PHP: загрузка страницы с языком по умолчанию в качестве языка браузера даже после очистки файлов cookie и истории

Я использую массив для поддерживаемых языков, как указано ниже:

$langs = array();
$langs[13] = array('zh','Chinese (Simplified) / 中文 (简体)');
$langs[2] = array('en','English (USA / International)');
$langs[4] = array('fr','French / Français');
$langs[1] = array('de','German / Deutsch');
$langs[6] = array('it','Italian / Italiano');
$langs[11] = array('ja','Japanese / 日本語');
$langs[8] = array('pt','Portuguese (Brazil) / Português');
$langs[3] = array('es','Spanish/ Español ');
$langs[14] = array('zh-tr','Chinese (Traditional) / 中文 (ç¹é«”)');

Теперь мне нужно установить сессию с языком по отношению к языку браузера. Но я сталкиваюсь с проблемой, как будто я удаляю файлы cookie и хост-файл браузера, тогда языком по умолчанию является английский, хотя язык моего браузера изменен на другой язык.

Код:

<?php

class Language {
public $data = array();


public function __construct () {
global $langs;

$lang = '';
$session = Registry::get('session');

if($session->get("lang")) {
$file = DIR_LANGUAGE . $session->get("lang") . '/messages.php';
define('LANG', $session->get("lang"));
}
else {
$pref_langs = $this->get_preferred_languages();
//print_r($langs);
while(list($k, $v) = each($pref_langs)) {
echo "v- ".$v." sep ";
if(in_array($v, $langs)) {


$lang = $v;
define('LANG', $lang);

break;
}
}
echo $lang." sep a";
if($lang == '') { $lang = DEFAULT_LANG; }

$session->set("lang", $lang);

$file = DIR_LANGUAGE . $lang . '/messages.php';
}

if(file_exists($file)) {
$_ = array();

require($file);

$this->data = array_merge($this->data, $_);
}
else {
exit('Error: Could not load language ' . $file . '!');
}

}


private function get_preferred_languages() {
$langs = array();

if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
//echo "HTTP_ACCEPT_LANGUAGE :".$_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);
print_r($langs);
return $langs;
}


public function get($key) {
return (isset($this->data[$key]) ? $this->data[$key] : $key);
}


}

?>

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]