157 lines
4.7 KiB
PHP
157 lines
4.7 KiB
PHP
<?php
|
|
/* ----------------------------------------------------------------------
|
|
|
|
MyOOS [Shopsystem]
|
|
https://www.oos-shop.de
|
|
|
|
Copyright (c) 2003 - 2019 by the MyOOS Development Team.
|
|
----------------------------------------------------------------------
|
|
Based on:
|
|
|
|
browser language detection logic
|
|
Copyright phpMyAdmin (select_lang.lib.php3 v1.24 04/19/2002)
|
|
Copyright Stephane Garin <sgarin@sgarin.com> (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'];
|
|
}
|
|
}
|