annotate accept-language.inc @ 33:511b6514823f

Remove more globals.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Thu, 04 Oct 2012 21:05:11 +0200
parents 5c4d7c758fda
children 2cfea6e84694 3898353ed1d8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
1 <?php
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
2 function acceptedLanguages() {
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
3 $langs = array();
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
4
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
5 if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
6 // break up string into pieces (languages and q factors)
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
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);
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
8
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
9 if (count($lang_parse[1])) {
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
10 // create a list like "en" => 0.8
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
11 $langs = array_combine($lang_parse[1], $lang_parse[4]);
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
12
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
13 // set default to 1 for any without q factor
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
14 foreach ($langs as $lang => $val) {
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
15 if ($val === '') $langs[$lang] = 1;
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
16 }
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
17
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
18 // sort list based on value
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
19 arsort($langs, SORT_NUMERIC);
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
20 }
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
21 }
9
60e73809887a Always return a language.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 0
diff changeset
22 return $langs;
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
23 }
24
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
24
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
25 function preferLanguage($prefer)
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
26 {
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
27 $language = $prefer;
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
28 $langs = acceptedLanguages();
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
29 if ($langs) {
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
30 foreach ($langs as $l => $val) {
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
31 if (file_exists($l)) {
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
32 $language = $l;
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
33 break;
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
34 }
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
35 }
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
36 }
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
37 return $language;
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
38 }
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
39 ?>