private function getDefaultLanguage($request, $languages)
{
$defaultLanguage = 'en';
if ($request->request->has('TOL_Language')) {
$defaultLanguage = $request->request->get('TOL_Language');
} elseif ($request->cookies->has('TOL_Language')) {
$defaultLanguage = $request->cookies->get('TOL_Language');
} else {
// Get the browser languages
$browserLanguageStr = $request->server->get('HTTP_ACCEPT_LANGUAGE', '');
$browserLanguageArray = preg_split('/[,;]/', $browserLanguageStr);
$browserLanguagePrefs = array();
foreach ($browserLanguageArray as $tmpLang) {
if (!(substr($tmpLang, 0, 2) == 'q=')) {
$browserLanguagePrefs[] = $tmpLang;
}
}
// Try to match preference exactly.
foreach ($browserLanguagePrefs as $pref) {
if (array_key_exists($pref, $languages)) {
$defaultLanguage = $pref;
break;
}
}
// Try to match two-letter language code.
if (is_null($defaultLanguage)) {
foreach ($browserLanguagePrefs as $pref) {
if (substr($pref, 0, 2) != '' && array_key_exists(substr($pref, 0, 2), $languages)) {
$defaultLanguage = $pref;
break;
}
}
}
$request->request->set('TOL_Language', $defaultLanguage);
$request->cookies->set('TOL_Language', $defaultLanguage);
}
return $defaultLanguage;
}