Quick Search:

View

Revision:

Diff

Diff from 377 to:

Annotations

Annotate by Age | Author | Mixed | None
/fisheye/browse/osCommerce/branches/hpdl/oscommerce/includes/classes/language.php

Annotated File View

hpdl
1
1 <?php
2 /*
hpdl
120
3   $Id: language.php 377 2006-01-09 14:47:49Z hpdl $
hpdl
1
4
5   osCommerce, Open Source E-Commerce Solutions
6   http://www.oscommerce.com
7
hpdl
377
8   Copyright (c) 2006 osCommerce
hpdl
1
9
10   Released under the GNU General Public License
11 */
12
13   class osC_Language {
14
15 /* Private variables */
hpdl
377
16     var $_code,
17         $_languages = array();
hpdl
1
18
19 /* Class constructor */
20
21     function osC_Language() {
hpdl
199
22       global $osC_Database;
hpdl
1
23
24       $Qlanguages = $osC_Database->query('select * from :table_languages order by sort_order, name');
25       $Qlanguages->bindTable(':table_languages', TABLE_LANGUAGES);
26       $Qlanguages->setCache('languages');
27       $Qlanguages->execute();
28
29       while ($Qlanguages->next()) {
30         $this->_languages[$Qlanguages->value('code')] = array('id' => $Qlanguages->valueInt('languages_id'),
31                                                               'name' => $Qlanguages->value('name'),
32                                                               'image' => $Qlanguages->value('image'),
33                                                               'directory' => $Qlanguages->value('directory'));
34       }
35
36       $Qlanguages->freeResult();
37
hpdl
377
38       $this->set();
hpdl
1
39     }
40
41 /* Public methods */
42
hpdl
377
43     function set($code = '') {
44       $this->_code = $code;
45
46       if (empty($this->_code)) {
47         if (isset($_SESSION['language'])) {
48           $this->_code = $_SESSION['language'];
49         } elseif (isset($_COOKIE['language'])) {
50           $this->_code = $_COOKIE['language'];
51         } else {
52           $this->_code = $this->getBrowserSetting();
hpdl
1
53         }
54       }
55
hpdl
377
56       if (empty($this->_code) || ($this->exists($this->_code) === false)) {
57         $this->_code = DEFAULT_LANGUAGE;
hpdl
1
58       }
59
hpdl
377
60       if (!isset($_COOKIE['language']) || (isset($_COOKIE['language']) && ($_COOKIE['language'] != $this->_code))) {
61         tep_setcookie('language', $this->_code, time()+60*60*24*90);
hpdl
1
62       }
63
hpdl
377
64       if ((isset($_SESSION['language']) === false) || (isset($_SESSION['language']) && ($_SESSION['language'] != $this->_code))) {
65         $_SESSION['language'] = $this->_code;
hpdl
1
66       }
67     }
68
hpdl
377
69     function getBrowserSetting() {
70       if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
71         $browser_languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
hpdl
1
72
hpdl
377
73         $languages = array('ar' => 'ar([-_][[:alpha:]]{2})?|arabic',
74                            'bg' => 'bg|bulgarian',
75                            'br' => 'pt[-_]br|brazilian portuguese',
76                            'ca' => 'ca|catalan',
77                            'cs' => 'cs|czech',
78                            'da' => 'da|danish',
79                            'de' => 'de([-_][[:alpha:]]{2})?|german',
80                            'el' => 'el|greek',
81                            'en' => 'en([-_][[:alpha:]]{2})?|english',
82                            'es' => 'es([-_][[:alpha:]]{2})?|spanish',
83                            'et' => 'et|estonian',
84                            'fi' => 'fi|finnish',
85                            'fr' => 'fr([-_][[:alpha:]]{2})?|french',
86                            'gl' => 'gl|galician',
87                            'he' => 'he|hebrew',
88                            'hu' => 'hu|hungarian',
89                            'id' => 'id|indonesian',
90                            'it' => 'it|italian',
91                            'ja' => 'ja|japanese',
92                            'ko' => 'ko|korean',
93                            'ka' => 'ka|georgian',
94                            'lt' => 'lt|lithuanian',
95                            'lv' => 'lv|latvian',
96                            'nl' => 'nl([-_][[:alpha:]]{2})?|dutch',
97                            'no' => 'no|norwegian',
98                            'pl' => 'pl|polish',
99                            'pt' => 'pt([-_][[:alpha:]]{2})?|portuguese',
100                            'ro' => 'ro|romanian',
101                            'ru' => 'ru|russian',
102                            'sk' => 'sk|slovak',
103                            'sr' => 'sr|serbian',
104                            'sv' => 'sv|swedish',
105                            'th' => 'th|thai',
106                            'tr' => 'tr|turkish',
107                            'uk' => 'uk|ukrainian',
108                            'tw' => 'zh[-_]tw|chinese traditional',
109                            'zh' => 'zh|chinese simplified');
hpdl
1
110
hpdl
377
111         foreach ($browser_languages as $browser_language) {
112           foreach ($languages as $key => $value) {
113             if (eregi('^(' . $value . ')(;q=[0-9]\\.[0-9])?$', $browser_language) && $this->exists($key)) {
114               return $key;
115             }
hpdl
1
116           }
117         }
118       }
119
hpdl
377
120       return false;
hpdl
1
121     }
122
hpdl
377
123     function exists($code) {
124       return array_key_exists($code, $this->_languages);
hpdl
1
125     }
126
127     function getAll() {
128       return $this->_languages;
129     }
130
hpdl
120
131     function getID() {
hpdl
377
132       return $this->_languages[$this->_code]['id'];
hpdl
1
133     }
hpdl
120
134
135     function getName() {
hpdl
377
136       return $this->_languages[$this->_code]['name'];
hpdl
120
137     }
138
139     function getCode() {
hpdl
377
140       return $this->_code;
hpdl
120
141     }
142
143     function getImage() {
hpdl
377
144       return $this->_languages[$this->_code]['image'];
hpdl
120
145     }
146
147     function getDirectory() {
hpdl
377
148       return $this->_languages[$this->_code]['directory'];
hpdl
120
149     }
150
151     function load($definition = false) {
152       if (is_string($definition)) {
153         include('includes/languages/' . $this->getDirectory() . '/' . $definition);
154       } else {
155         include('includes/languages/' . $this->getDirectory() . '.php');
156       }
157     }
hpdl
1
158   }
159 ?>