2016-08-08 3 views
0

Existe-t-il un moyen de connaître les paramètres de langue des machines client? spécifiquement le séparateur de liste (délimiteur) sélectionné. Parce que, dans mon site Web de projet (développé en utilisant PHP, Javascript, Jquery), le client peut exporter des rapports au format csv. À l'heure actuelle, nous créons ce csv avec "virgule" comme délimiteur. Mais pour certains de nos clients, lorsqu'ils ouvrent ce fichier CSV, les données sont affichées dans une colonne avec des virgules séparées. J'ai compris que c'était parce que le séparateur de liste par défaut sélectionné dans leur configuration du panneau de configuration du système d'exploitation peut être un délimiteur différent de la virgule. Cependant, nous ne voulons pas dire à tous les clients de changer leur configuration de système d'exploitation. Existe-t-il une autre solution pour cela? Si je génère xls fichier au lieu de csv ce même problème viendra dans le futur non ???Obtenir la valeur des paramètres de langue utilisateur Windows

+0

Jetez un oeil à la réponse à http://stackoverflow.com/questions/1011628/detecting-regional-settings-list-separator-from-web#2812853 – rypskar

Répondre

0

Essayez cette fonction

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; 
}