annotate accept-language.inc @ 54:f938b292f046

Something went wrong during last merge. Fix it now.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Thu, 11 Oct 2012 00:57:16 +0200
parents 2e6ba7259281
children 88482c6636c4
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
51
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 24
diff changeset
2 /**
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 24
diff changeset
3 * @file
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 24
diff changeset
4 * Functionality for determining language use
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 24
diff changeset
5 */
54
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
6 class Language {
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
7 function acceptedLanguages() {
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
8 $langs = array();
51
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 24
diff changeset
9
54
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
10 /**
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
11 * Extracts the accepted languages from the GET query, sorted by
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
12 * preference(q-value).
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
13 *
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
14 * @return associative array of language codes with q value
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
15 */
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
16 function acceptedLanguages() {
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
17 $langs = array();
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
18
54
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
19 if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
20 // break up string into pieces (languages and q factors)
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
21 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);
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
22
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
23 if (count($lang_parse[1])) {
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
24 // create a list like "en" => 0.8
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
25 $langs = array_combine($lang_parse[1], $lang_parse[4]);
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
26
54
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
27 // set default to 1 for any without q factor
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
28 foreach ($langs as $lang => $val) {
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
29 if ($val === '') $langs[$lang] = 1;
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
30 }
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 24
diff changeset
31
54
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
32 // sort list based on value
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
33 arsort($langs, SORT_NUMERIC);
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 24
diff changeset
34 }
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 24
diff changeset
35 }
54
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
36 return $langs;
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 24
diff changeset
37 }
54
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
38
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
39 function preferLanguage($prefer)
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
40 {
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
41 $language = $prefer;
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
42 $langs = acceptedLanguages();
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
43 if ($langs) {
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
44 foreach ($langs as $l => $val) {
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
45 if (file_exists($l)) {
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
46 $language = $l;
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
47 break;
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
48 }
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
49 }
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
50 }
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
51 return $language;
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
52 }
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 24
diff changeset
53 }
24
5c4d7c758fda Remove name as hardcoded attribute.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 9
diff changeset
54 }
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
55 ?>