Quick Search:

Mode

Context

Displaying 3 lines of context. None | Less | More | Full

Other Diffs

Ignore

Blank Lines Whitespace:

Diff

199
 
377
 
377
 
language.php
_> 11 <?php
  22 /*
<> 3 -  $Id: language.php 199 2005-09-22 15:56:13Z hpdl $
   3+  $Id: language.php 377 2006-01-09 14:47:49Z hpdl $
44 
  55   osCommerce, Open Source E-Commerce Solutions
  66   http://www.oscommerce.com
  77 
<> 8 -  Copyright (c) 2005 osCommerce
   8+  Copyright (c) 2006 osCommerce
99 
  1010   Released under the GNU General Public License
  1111 */
  1212 
  1313   class osC_Language {
  1414 
<> 15 -/* Public variables */
  16 -
  17 -    var $language;
  18 -
1915 /* Private variables */
<> 20 -    var $_languages = array();
   16+    var $_code,
   17+        $_languages = array();
2118 
  2219 /* Class constructor */
  2320 
     
 !
3229       while ($Qlanguages->next()) {
  3330         $this->_languages[$Qlanguages->value('code')] = array('id' => $Qlanguages->valueInt('languages_id'),
  3431                                                               'name' => $Qlanguages->value('name'),
<> 35 -                                                              'code' => $Qlanguages->value('code'),
3632                                                               'image' => $Qlanguages->value('image'),
  3733                                                               'directory' => $Qlanguages->value('directory'));
  3834       }
  3935 
  4036       $Qlanguages->freeResult();
  4137 
<> 42 -      if (isset($_SESSION['language'])) {
  43 -        $this->set();
  44 -      } else {
  45 -        $this->setToBrowser();
  46 -      }
   38+      $this->set();
4739     }
  4840 
  4941 /* Public methods */
  5042 
<> 51 -    function set($lang = '') {
  52 -      if (empty($lang) && isset($_SESSION['language'])) {
  53 -        foreach ($this->_languages as $l) {
  54 -          if ($l['directory'] == $_SESSION['language']) {
  55 -            $lang = $l['code'];
  56 -            break;
  57 -          }
   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();
5853         }
  5954       }
  6055 
<> 61 -      if (empty($lang) || ($this->exists($lang) === false)) {
  62 -        $lang = DEFAULT_LANGUAGE;
   56+      if (empty($this->_code) || ($this->exists($this->_code) === false)) {
   57+        $this->_code = DEFAULT_LANGUAGE;
6358       }
  6459 
<> 65 -      $this->language = $this->get($lang);
  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);
   60+      if (!isset($_COOKIE['language']) || (isset($_COOKIE['language']) && ($_COOKIE['language'] != $this->_code))) {
   61+        tep_setcookie('language', $this->_code, time()+60*60*24*90);
6962       }
  7063 
<> 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'];
   64+      if ((isset($_SESSION['language']) === false) || (isset($_SESSION['language']) && ($_SESSION['language'] != $this->_code))) {
   65+        $_SESSION['language'] = $this->_code;
7466       }
  7567     }
  7668 
<> 77 -    function setToBrowser() {
  78 -      if (isset($_COOKIE['language'])) {
  79 -        if ($this->exists($_COOKIE['language'])) {
  80 -          $this->set($_COOKIE['language']);
   69+    function getBrowserSetting() {
   70+      if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
   71+        $browser_languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
8172 
<> 82 -          return true;
  83 -        }
  84 -      }
   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');
85110 
<> 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;
   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+            }
132116           }
  133117         }
  134118       }
  135119 
<> 136 -      $this->set(DEFAULT_LANGUAGE);
   120+      return false;
137121     }
  138122 
<> 139 -    function get($lang) {
  140 -      return $this->_languages[$lang];
   123+    function exists($code) {
   124+      return array_key_exists($code, $this->_languages);
141125     }
  142126 
  143127     function getAll() {
  144128       return $this->_languages;
  145129     }
  146130 
<> 147 -    function exists($lang) {
  148 -      return array_key_exists($lang, $this->_languages);
  149 -    }
  150 -
151131     function getID() {
<> 152 -      return $this->language['id'];
   132+      return $this->_languages[$this->_code]['id'];
153133     }
  154134 
  155135     function getName() {
<> 156 -      return $this->language['name'];
   136+      return $this->_languages[$this->_code]['name'];
157137     }
  158138 
  159139     function getCode() {
<> 160 -      return $this->language['code'];
   140+      return $this->_code;
161141     }
  162142 
  163143     function getImage() {
<> 164 -      return $this->language['image'];
   144+      return $this->_languages[$this->_code]['image'];
165145     }
  166146 
  167147     function getDirectory() {
<> 168 -      return $this->language['directory'];
   148+      return $this->_languages[$this->_code]['directory'];
<_ 169149     }
  170150 
  171151     function load($definition = false) {