Mercurial > SimpleWebPresenter
view Language.inc.php @ 136:60bc8f62384d default tip
Use internal URL if available to generate Sitemap.
| author | Tom Fredrik Blenning <bfg@bfgconsult.no> |
|---|---|
| date | Mon, 23 Jan 2023 00:17:36 +0100 |
| parents | b6b4a58c7625 |
| children |
line wrap: on
line source
<?php /** * Functionality for determining language use */ class Language { /** * Extracts the accepted languages from the GET query, sorted by * preference(q-value). * * @return associative array of language codes with q value */ static function accepted() { $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; } /** * From the list of desired languages, pick the best which we can serve. * * @param $default what to choose if no match could be found. */ static function prefer($default) { $language = $default; $langs = self::accepted(); if ($langs) { foreach ($langs as $l => $val) { if (file_exists($l)) { $language = $l; break; } } } return $language; } } ?>
