view accept-language.inc @ 52:3898353ed1d8

Include fixes. sitemap don't print before everything has been processed. Make a class of accept-language.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Thu, 11 Oct 2012 00:48:46 +0200
parents 5c4d7c758fda
children 2e6ba7259281
line wrap: on
line source

<?php
class Language {
  function acceptedLanguages() {
    $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);
      }
    }
    return $langs;
  }

  function preferLanguage($prefer)
  {
    $language = $prefer;
    $langs = acceptedLanguages();
    if ($langs) {
      foreach ($langs as $l => $val) {
	if (file_exists($l)) {
	  $language = $l;
	  break;
	}
      }
    }
    return $language;
  }
}
?>