Пример #1
0
 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();
 }
Пример #2
0
 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();
 }