Advertisement
Danack

Shit accept code.

Jul 25th, 2013
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.39 KB | None | 0 0
  1. function getLanguagePreferrenceFromBrowser($languageOverride = FALSE){
  2.  
  3.     $langs = array();
  4.  
  5.     $languageString = FALSE;
  6.  
  7.     if( isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ){
  8.         $languageString = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
  9.     }
  10.  
  11.     if($languageOverride !== FALSE){
  12.         $languageString = $languageOverride;
  13.     }
  14.  
  15.     if($languageString !== FALSE) {
  16.         // break up string into pieces (languages and q factors)
  17.         preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $languageString, $lang_parse);
  18.  
  19.         if (count($lang_parse[1])) {
  20.             // create a list like "en" => 0.8
  21.             $langs = array_combine($lang_parse[1], $lang_parse[4]);
  22.  
  23.             // set default to 1 for any without q factor
  24.             foreach ($langs as $lang => $val) {
  25.                 if ($val === ''){
  26.                     $langs[$lang] = 1;
  27.                 }
  28.             }
  29.  
  30.             // sort list based on value
  31.             arsort($langs, SORT_NUMERIC);
  32.         }
  33.     }
  34.  
  35.  
  36.     // look through sorted list and use first one that matches our languages
  37.     foreach ($langs as $lang => $val) {
  38.         //foreach($knownLanguages as $languageAbbrev => $languageID){
  39.  
  40.         foreach($GLOBALS['activeLanguagesArray'] as $activeLanguage){
  41.             $languageAbbrev = $activeLanguage['abbreviation'];
  42.             $languageID = $activeLanguage['languageID'];
  43.  
  44.             if (strpos($lang, $languageAbbrev) === 0) {
  45.                 return $languageID;
  46.             }
  47.         }
  48.     }
  49.  
  50.     return LANGUAGE_ENGLISH;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement