view accept-language.inc @ 26:d8c7b328899e

Removed globals, and introduced Options object for passing values around. Introduced <accepted_values> tag into master.xml
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Sun, 30 Sep 2012 00:16:58 +0200
parents 5c4d7c758fda
children 2cfea6e84694 3898353ed1d8
line wrap: on
line source

<?php
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;
}
?>