(detect_language.php v0.1 04/02/2002) File: language.php,v 1.6 2003/06/28 16:53:09 dgw_ ---------------------------------------------------------------------- osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2003 osCommerce ---------------------------------------------------------------------- Released under the GNU General Public License ---------------------------------------------------------------------- */ /** ensure this file is being included by a parent file */ defined( 'OOS_VALID_MOD' ) OR die( 'Direct Access to this location is not allowed.' ); class language { var $languages; var $_languages = array(); public function __construct() { $dbconn =& oosDBGetConn(); $oostable =& oosDBGetTables(); $languagestable = $oostable['languages']; $languages_sql = "SELECT languages_id, name, iso_639_2, iso_639_1 FROM $languagestable WHERE status = '1' ORDER BY sort_order"; if (USE_CACHE == 'true') { $languages_result = $dbconn->CacheExecute(3600*24, $languages_sql); } else { $languages_result = $dbconn->Execute($languages_sql); } while ($languages = $languages_result->fields) { $this->_languages[$languages['iso_639_2']] = array('id' => $languages['languages_id'], 'name' => $languages['name'], 'iso_639_2' => $languages['iso_639_2'], 'iso_639_1' => $languages['iso_639_1']); // Move that ADOdb pointer! $languages_result->MoveNext(); } } function set_language($sLang = '') { if ( (oos_is_not_null($sLang)) && ($this->exists($sLang) === TRUE)) { $this->language = $this->get($sLang); } else { $this->language = $this->get(DEFAULT_LANGUAGE); } if (isset($_SESSION) && isset($_SESSION['customer_id'])) { $dbconn =& oosDBGetConn(); $oostable =& oosDBGetTables(); $sLanguage = oos_var_prep_for_os($this->language['iso_639_2']); $customerstable = $oostable['customers']; $query = "UPDATE $customerstable SET customers_language =? WHERE customers_id =?"; $result = $dbconn->Execute($query, array($sLanguage, (int)$_SESSION['customer_id'])); } } function get_browser_language() { $http_accept_language = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); $browser_languages = array( 'af' => 'af|afrikaans', 'ar' => 'ar([-_][[:alpha:]]{2})?|arabic', 'az' => 'az|azerbaijani', 'bg' => 'bg|bulgarian', 'br' => 'pt[-_]br|brazilian portuguese', 'bs' => 'bs|bosnian', 'ca' => 'ca|catalan', 'cs' => 'cs|czech', 'da' => 'da|danish', 'deu' => 'de([-_][[:alpha:]]{2})?|german', 'el' => 'el|greek', 'eng' => 'en([-_][[:alpha:]]{2})?|english', 'spa' => 'es([-_][[:alpha:]]{2})?|spanish', 'et' => 'et|estonian', 'fi' => 'fi|finnish', 'fra' => 'fr([-_][[:alpha:]]{2})?|french', 'gl' => 'gl|galician', 'hu' => 'hu|hungarian', 'ita' => 'it|italian', 'ka' => 'ka|georgian', 'lt' => 'lt|lithuanian', 'nl' => 'nl([-_][[:alpha:]]{2})?|dutch', 'no' => 'no|norwegian', 'pol' => 'pl|polish', 'pt' => 'pt([-_][[:alpha:]]{2})?|portuguese', 'ro' => 'ro|romanian', 'rus' => 'ru|russian', 'sk' => 'sk|slovak', 'sr' => 'sr|serbian', 'sv' => 'sv|swedish', 'tr' => 'tr|turkish', 'uk' => 'uk|ukrainian', 'zh' => 'zh|chinese simplified'); foreach ($http_accept_language as $browser_language) { foreach ($browser_languages as $key => $value) { if (preg_match('/^(' . $value . ')(;q=[0-9]\\.[0-9])?$/', $browser_language) && $this->exists($key)) { $this->set_language($key); return TRUE; } } } $this->set_language(DEFAULT_LANGUAGE); } function get($sLang) { return $this->_languages[$sLang]; } function getAll() { return $this->_languages; } function exists($sLang) { return array_key_exists($sLang, $this->_languages); } function getID() { return $this->language['id']; } function getName() { return $this->language['name']; } function getCode() { return $this->language['iso_639_2']; } }