2016-08-08 4 views
0

Есть ли способ узнать настройки языка клиентских машин? в частности выбранный разделитель списка (разделитель). Потому что на моем веб-сайте проекта (разработанном с использованием PHP, Javascript, JQuery) клиент может экспортировать отчеты в формате csv. В настоящее время мы создаем этот csv с «запятой» в качестве разделителя. Но для некоторых наших клиентов, когда они открывают этот CSV, данные отображаются в одном столбце с запятой.Получить настройки языка пользователя Windows Значение

Я понял, что это связано с тем, что по умолчанию Перечень разделов, выбранный в их конфигурации панели управления ОС, может быть разным разделителем, чем запятой. Тем не менее, мы не хотим сообщать каждому клиенту об изменении их конфигурации ОС. Есть ли другие решения для этого? Если я сгенерировал xls файл вместо csv, эта же проблема будет в будущем правильной ???

+0

Посмотрите на ответ в http://stackoverflow.com/questions/1011628/detecting-regional-settings-list-separator-from-web#2812853 – rypskar

ответ

0

Попробуйте эту функцию

function getUserLanguage() { 
    $langs = array(); 
    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { 
// break up string into pieces (languages and q factors) 
preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', 
$_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse); 
if (count($lang_parse[1])) { 
// create a list like â??enâ?? => 0.8 
$langs = array_combine($lang_parse[1], $lang_parse[4]); 
// set default to 1 for any without q factor 
foreach ($langs as $lang => $val) { 
if ($val === '') $langs[$lang] = 1; 
} 
// sort list based on value 
arsort($langs, SORT_NUMERIC); 
} 
} 
//extract most important (first) 
foreach ($langs as $lang => $val) { break; } 
//if complex language simplify it 
if (stristr($lang,"-")) {$tmp = explode("-",$lang); $lang = $tmp[0]; } 
return $lang; 
}