language.php

来自「this the oscommerce 3.0 aplha 4」· PHP 代码 · 共 263 行

PHP
263
字号
<?php/*  $Id: language.php 1512 2007-03-29 23:46:41Z hpdl $  osCommerce, Open Source E-Commerce Solutions  http://www.oscommerce.com  Copyright (c) 2007 osCommerce  This program is free software; you can redistribute it and/or modify  it under the terms of the GNU General Public License v2 (1991)  as published by the Free Software Foundation.*/  class osC_Language {/* Private variables */    var $_code,        $_languages = array(),        $_definitions = array();/* Class constructor */    function osC_Language() {      global $osC_Database;      $Qlanguages = $osC_Database->query('select * from :table_languages order by sort_order, name');      $Qlanguages->bindTable(':table_languages', TABLE_LANGUAGES);      $Qlanguages->setCache('languages');      $Qlanguages->execute();      while ($Qlanguages->next()) {        $this->_languages[$Qlanguages->value('code')] = array('id' => $Qlanguages->valueInt('languages_id'),                                                              'code' => $Qlanguages->value('code'),                                                              'name' => $Qlanguages->value('name'),                                                              'locale' => $Qlanguages->value('locale'),                                                              'charset' => $Qlanguages->value('charset'),                                                              'date_format_short' => $Qlanguages->value('date_format_short'),                                                              'date_format_long' => $Qlanguages->value('date_format_long'),                                                              'time_format' => $Qlanguages->value('time_format'),                                                              'text_direction' => $Qlanguages->value('text_direction'),                                                              'currencies_id' => $Qlanguages->valueInt('currencies_id'),                                                              'numeric_separator_decimal' => $Qlanguages->value('numeric_separator_decimal'),                                                              'numeric_separator_thousands' => $Qlanguages->value('numeric_separator_thousands'),                                                              'parent_id' => $Qlanguages->valueInt('parent_id'));      }      $Qlanguages->freeResult();      $this->set();    }/* Public methods */    function load($key, $language_code = null) {      global $osC_Database;      if ( is_null($language_code) ) {        $language_code = $this->_code;      }      if ( $this->_languages[$language_code]['parent_id'] > 0 ) {        $this->load($key, $this->getCodeFromID($this->_languages[$language_code]['parent_id']));      }      $Qdef = $osC_Database->query('select * from :table_languages_definitions where languages_id = :languages_id and content_group = :content_group');      $Qdef->bindTable(':table_languages_definitions', TABLE_LANGUAGES_DEFINITIONS);      $Qdef->bindInt(':languages_id', $this->getData('id', $language_code));      $Qdef->bindValue(':content_group', $key);      $Qdef->setCache('languages-' . $language_code . '-' . $key);      $Qdef->execute();      while ($Qdef->next()) {        $this->_definitions[$Qdef->value('definition_key')] = $Qdef->value('definition_value');      }      $Qdef->freeResult();    }    function get($key) {      if (isset($this->_definitions[$key])) {        return $this->_definitions[$key];      }      return $key;    }    function set($code = '') {      $this->_code = $code;      if (empty($this->_code)) {        if (isset($_SESSION['language'])) {          $this->_code = $_SESSION['language'];        } elseif (isset($_COOKIE['language'])) {          $this->_code = $_COOKIE['language'];        } else {          $this->_code = $this->getBrowserSetting();        }      }      if (empty($this->_code) || ($this->exists($this->_code) === false)) {        $this->_code = DEFAULT_LANGUAGE;      }      if (!isset($_COOKIE['language']) || (isset($_COOKIE['language']) && ($_COOKIE['language'] != $this->_code))) {        osc_setcookie('language', $this->_code, time()+60*60*24*90);      }      if ((isset($_SESSION['language']) === false) || (isset($_SESSION['language']) && ($_SESSION['language'] != $this->_code))) {        $_SESSION['language'] = $this->_code;      }    }    function getBrowserSetting() {      if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {        $browser_languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);        $languages = array('ar' => 'ar([-_][[:alpha:]]{2})?|arabic',                           'bg' => 'bg|bulgarian',                           'br' => 'pt[-_]br|brazilian portuguese',                           'ca' => 'ca|catalan',                           'cs' => 'cs|czech',                           'da' => 'da|danish',                           'de' => 'de([-_][[:alpha:]]{2})?|german',                           'el' => 'el|greek',                           'en' => 'en([-_][[:alpha:]]{2})?|english',                           'es' => 'es([-_][[:alpha:]]{2})?|spanish',                           'et' => 'et|estonian',                           'fi' => 'fi|finnish',                           'fr' => 'fr([-_][[:alpha:]]{2})?|french',                           'gl' => 'gl|galician',                           'he' => 'he|hebrew',                           'hu' => 'hu|hungarian',                           'id' => 'id|indonesian',                           'it' => 'it|italian',                           'ja' => 'ja|japanese',                           'ko' => 'ko|korean',                           'ka' => 'ka|georgian',                           'lt' => 'lt|lithuanian',                           'lv' => 'lv|latvian',                           'nl' => 'nl([-_][[:alpha:]]{2})?|dutch',                           'no' => 'no|norwegian',                           'pl' => 'pl|polish',                           'pt' => 'pt([-_][[:alpha:]]{2})?|portuguese',                           'ro' => 'ro|romanian',                           'ru' => 'ru|russian',                           'sk' => 'sk|slovak',                           'sr' => 'sr|serbian',                           'sv' => 'sv|swedish',                           'th' => 'th|thai',                           'tr' => 'tr|turkish',                           'uk' => 'uk|ukrainian',                           'tw' => 'zh[-_]tw|chinese traditional',                           'zh' => 'zh|chinese simplified');        foreach ($browser_languages as $browser_language) {          foreach ($languages as $key => $value) {            if (eregi('^(' . $value . ')(;q=[0-9]\\.[0-9])?$', $browser_language) && $this->exists($key)) {              return $key;            }          }        }      }      return false;    }    function exists($code) {      return array_key_exists($code, $this->_languages);    }    function getAll() {      return $this->_languages;    }    function getData($key, $language = '') {      if (empty($language)) {        $language = $this->_code;      }      return $this->_languages[$language][$key];    }    function getCodeFromID($id) {      foreach ($this->_languages as $code => $lang) {        if ($lang['id'] == $id) {          return $code;        }      }    }    function getID() {      return $this->_languages[$this->_code]['id'];    }    function getName() {      return $this->_languages[$this->_code]['name'];    }    function getCode() {      return $this->_code;    }    function getLocale() {      return $this->_languages[$this->_code]['locale'];    }    function getCharacterSet() {      return $this->_languages[$this->_code]['charset'];    }    function getDateFormatShort($with_time = false) {      if ($with_time === true) {        return $this->_languages[$this->_code]['date_format_short'] . ' ' . $this->getTimeFormat();      }      return $this->_languages[$this->_code]['date_format_short'];    }    function getDateFormatLong() {      return $this->_languages[$this->_code]['date_format_long'];    }    function getTimeFormat() {      return $this->_languages[$this->_code]['time_format'];    }    function getTextDirection() {      return $this->_languages[$this->_code]['text_direction'];    }    function getCurrencyID() {      return $this->_languages[$this->_code]['currencies_id'];    }    function getNumericDecimalSeparator() {      return $this->_languages[$this->_code]['numeric_separator_decimal'];    }    function getNumericThousandsSeparator() {      return $this->_languages[$this->_code]['numeric_separator_thousands'];    }    function showImage($code = null, $width = '16', $height = '10', $parameters = null) {      if ( empty($code) ) {        $code = $this->_code;      }      $image_code = strtolower(substr($code, 3));      if ( !is_numeric($width) ) {        $width = 16;      }      if ( !is_numeric($height) ) {        $height = 10;      }      return osc_image('images/worldflags/' . $image_code . '.png', $this->_languages[$code]['name'], $width, $height, $parameters);    }  }?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?