public function detect($request) { foreach (explode('/', setlocale(LC_ALL, 0)) as $locale) { if ('C' !== $locale) { break; } } if ('C' === $locale) { return null; } $locale = str_replace('_', '-', substr($locale, 0, strpos($locale, '.') ?: strlen($locale))); return Localization\format_locale($locale)->getLanguage(); }
public function detect($request) { $acceptLanguages = $request->header('accept-language'); if (isset($acceptLanguages) && strlen($acceptLanguages) > 1) { $acceptLanguages = explode(",", $acceptLanguages); $lang = []; foreach ($acceptLanguages as $language) { if (preg_match("/(.*);q=([0-1]{0,1}.\\d{0,4})/i", $language, $matches)) { $lang[$matches[1]] = (double) $matches[2]; } else { $lang[$language] = 1.0; } } $qval = 0.0; foreach ($lang as $key => $value) { if ($value > $qval) { $qval = (double) $value; $deflang = $key; } } } return Localization\format_locale($deflang)->getLanguage(); }