annotate accept-language.inc @ 53:2e6ba7259281

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