annotate Language.inc @ 75:5e76b6feb2ad

Correct check for matchlength.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Fri, 12 Oct 2012 01:19:23 +0200
parents 74f7b64bdb78
children
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 * Functionality for determining language use
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 24
diff changeset
4 */
54
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
5 class Language {
55
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
6 /**
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
7 * Extracts the accepted languages from the GET query, sorted by
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
8 * preference(q-value).
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
9 *
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
10 * @return associative array of language codes with q value
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
11 */
66
74f7b64bdb78 Lots of documentation fixes, and removal of unused function getXmlContent
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 56
diff changeset
12 static function accepted() {
54
f938b292f046 Something went wrong during last merge. Fix it now.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
13 $langs = array();
51
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 24
diff changeset
14
55
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
15 if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
16 // break up string into pieces (languages and q factors)
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
17 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);
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
18
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
19 if (count($lang_parse[1])) {
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
20 // create a list like "en" => 0.8
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
21 $langs = array_combine($lang_parse[1], $lang_parse[4]);
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
22
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
23 // set default to 1 for any without q factor
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
24 foreach ($langs as $lang => $val) {
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
25 if ($val === '') $langs[$lang] = 1;
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
26 }
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
27
55
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
28 // sort list based on value
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
29 arsort($langs, SORT_NUMERIC);
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
30 }
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
31 }
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
32 return $langs;
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
33 }
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
34
55
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
35 /**
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
36 * From the list of desired languages, pick the best which we can serve.
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
37 *
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
38 * @param $default what to choose if no match could be found.
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
39 */
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
40 static function prefer($default)
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
41 {
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
42 $language = $default;
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
43 $langs = self::accepted();
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
44 if ($langs) {
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
45 foreach ($langs as $l => $val) {
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
46 if (file_exists($l)) {
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
47 $language = $l;
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
48 break;
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 24
diff changeset
49 }
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 24
diff changeset
50 }
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 24
diff changeset
51 }
55
88482c6636c4 Yet another fix for failed merge.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 54
diff changeset
52 return $language;
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 ?>