comparison 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
comparison
equal deleted inserted replaced
50:2d0cda52f43f 52:3898353ed1d8
1 <?php 1 <?php
2 function acceptedLanguages() { 2 class Language {
3 $langs = array(); 3 function acceptedLanguages() {
4 $langs = array();
4 5
5 if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { 6 if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
6 // break up string into pieces (languages and q factors) 7 // break up string into pieces (languages and q factors)
7 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); 8 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);
8 9
9 if (count($lang_parse[1])) { 10 if (count($lang_parse[1])) {
10 // create a list like "en" => 0.8 11 // create a list like "en" => 0.8
11 $langs = array_combine($lang_parse[1], $lang_parse[4]); 12 $langs = array_combine($lang_parse[1], $lang_parse[4]);
12 13
13 // set default to 1 for any without q factor 14 // set default to 1 for any without q factor
14 foreach ($langs as $lang => $val) { 15 foreach ($langs as $lang => $val) {
15 if ($val === '') $langs[$lang] = 1; 16 if ($val === '') $langs[$lang] = 1;
16 } 17 }
17 18
18 // sort list based on value 19 // sort list based on value
19 arsort($langs, SORT_NUMERIC); 20 arsort($langs, SORT_NUMERIC);
20 }
21 }
22 return $langs;
23 }
24
25 function preferLanguage($prefer)
26 {
27 $language = $prefer;
28 $langs = acceptedLanguages();
29 if ($langs) {
30 foreach ($langs as $l => $val) {
31 if (file_exists($l)) {
32 $language = $l;
33 break;
34 } 21 }
35 } 22 }
23 return $langs;
36 } 24 }
37 return $language; 25
26 function preferLanguage($prefer)
27 {
28 $language = $prefer;
29 $langs = acceptedLanguages();
30 if ($langs) {
31 foreach ($langs as $l => $val) {
32 if (file_exists($l)) {
33 $language = $l;
34 break;
35 }
36 }
37 }
38 return $language;
39 }
38 } 40 }
39 ?> 41 ?>