Quick Search:

View

Revision:

Diff

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