📄 language.inc.php
字号:
<?php
if ( !defined( "__CLASS_LANGUAGE__" ) ) {
define( "__CLASS_LANGUAGE__", 1 );
//define( "DEFAULT_LANGUAGE", "zh" );
require_once(dirname(__FILE__)."/OutputHtml.inc.php");
class language {
var $available_languages;
var $lang;
var $objOutputHtml;
function language($basedir)
{
$this->base_dir = $basedir;
$this->objOutputHtml = new OutputHtml();
$this->available_languages = array(
'af-utf-8' => array('af|afrikaans', 'afrikaans-utf-8', 'af'),
'af-iso-8859-1'=> array('af|afrikaans', 'afrikaans-iso-8859-1', 'af'),
'ar-utf-8' => array('ar([-_][[:alpha:]]{2})?|arabic', 'arabic-utf-8', 'ar'),
'ar-win1256' => array('ar([-_][[:alpha:]]{2})?|arabic', 'arabic-windows-1256', 'ar'),
'az-utf-8' => array('az|azerbaijani', 'azerbaijani-utf-8', 'az'),
'az-iso-8859-9'=> array('az|azerbaijani', 'azerbaijani-iso-8859-9', 'az'),
'bg-utf-8' => array('bg|bulgarian', 'bulgarian-utf-8', 'bg'),
'bg-win1251' => array('bg|bulgarian', 'bulgarian-windows-1251', 'bg'),
'bg-koi8-r' => array('bg|bulgarian', 'bulgarian-koi8-r', 'bg'),
'bs-utf-8' => array('bs|bosnian', 'bosnian-utf-8', 'bs'),
'bs-win1250' => array('bs|bosnian', 'bosnian-windows-1250', 'bs'),
'ca-utf-8' => array('ca|catalan', 'catalan-utf-8', 'ca'),
'ca-iso-8859-1'=> array('ca|catalan', 'catalan-iso-8859-1', 'ca'),
'cs-utf-8' => array('cs|czech', 'czech-utf-8', 'cs'),
'cs-iso-8859-2'=> array('cs|czech', 'czech-iso-8859-2', 'cs'),
'cs-win1250' => array('cs|czech', 'czech-windows-1250', 'cs'),
'da-utf-8' => array('da|danish', 'danish-utf-8', 'da'),
'da-iso-8859-1'=> array('da|danish', 'danish-iso-8859-1', 'da'),
'de-utf-8' => array('de([-_][[:alpha:]]{2})?|german', 'german-utf-8', 'de'),
'de-iso-8859-1'=> array('de([-_][[:alpha:]]{2})?|german', 'german-iso-8859-1', 'de'),
'el-utf-8' => array('el|greek', 'greek-utf-8', 'el'),
'el-iso-8859-7'=> array('el|greek', 'greek-iso-8859-7', 'el'),
'en-utf-8' => array('en([-_][[:alpha:]]{2})?|english', 'english-utf-8', 'en'),
'en-iso-8859-1'=> array('en([-_][[:alpha:]]{2})?|english', 'english-iso-8859-1', 'en'),
'es-utf-8' => array('es([-_][[:alpha:]]{2})?|spanish', 'spanish-utf-8', 'es'),
'es-iso-8859-1'=> array('es([-_][[:alpha:]]{2})?|spanish', 'spanish-iso-8859-1', 'es'),
'et-utf-8' => array('et|estonian', 'estonian-utf-8', 'et'),
'et-iso-8859-1'=> array('et|estonian', 'estonian-iso-8859-1', 'et'),
'eu-utf-8' => array('eu|basque', 'basque-utf-8', 'eu'),
'eu-iso-8859-1'=> array('eu|basque', 'basque-iso-8859-1', 'eu'),
'fa-utf-8' => array('fa|persian', 'persian-utf-8', 'fa'),
'fa-win1256' => array('fa|persian', 'persian-windows-1256', 'fa'),
'fi-utf-8' => array('fi|finnish', 'finnish-utf-8', 'fi'),
'fi-iso-8859-1'=> array('fi|finnish', 'finnish-iso-8859-1', 'fi'),
'fr-utf-8' => array('fr([-_][[:alpha:]]{2})?|french', 'french-utf-8', 'fr'),
'fr-iso-8859-1'=> array('fr([-_][[:alpha:]]{2})?|french', 'french-iso-8859-1', 'fr'),
'gl-utf-8' => array('gl|galician', 'galician-utf-8', 'gl'),
'gl-iso-8859-1'=> array('gl|galician', 'galician-iso-8859-1', 'gl'),
'he-iso-8859-8-i'=> array('he|hebrew', 'hebrew-iso-8859-8-i', 'he'),
'hi-utf-8' => array('hi|hindi', 'hindi-utf-8', 'hi'),
'hr-utf-8' => array('hr|croatian', 'croatian-utf-8', 'hr'),
'hr-win1250' => array('hr|croatian', 'croatian-windows-1250', 'hr'),
'hr-iso-8859-2'=> array('hr|croatian', 'croatian-iso-8859-2', 'hr'),
'hu-utf-8' => array('hu|hungarian', 'hungarian-utf-8', 'hu'),
'hu-iso-8859-2'=> array('hu|hungarian', 'hungarian-iso-8859-2', 'hu'),
'id-utf-8' => array('id|indonesian', 'indonesian-utf-8', 'id'),
'id-iso-8859-1'=> array('id|indonesian', 'indonesian-iso-8859-1', 'id'),
'it-utf-8' => array('it|italian', 'italian-utf-8', 'it'),
'it-iso-8859-1'=> array('it|italian', 'italian-iso-8859-1', 'it'),
'ja-utf-8' => array('ja|japanese', 'japanese-utf-8', 'ja'),
'ja-euc' => array('ja|japanese', 'japanese-euc', 'ja'),
'ja-sjis' => array('ja|japanese', 'japanese-sjis', 'ja'),
'ko-euc-kr' => array('ko|korean', 'korean-euc-kr', 'ko'),
'ko-utf-8' => array('ko|korean', 'korean-utf-8', 'ko'),
'ka-utf-8' => array('ka|georgian', 'georgian-utf-8', 'ka'),
'lt-utf-8' => array('lt|lithuanian', 'lithuanian-utf-8', 'lt'),
'lt-win1257' => array('lt|lithuanian', 'lithuanian-windows-1257', 'lt'),
'lv-utf-8' => array('lv|latvian', 'latvian-utf-8', 'lv'),
'lv-win1257' => array('lv|latvian', 'latvian-windows-1257', 'lv'),
'ms-utf-8' => array('ms|malay', 'malay-utf-8', 'ms'),
'ms-iso-8859-1'=> array('ms|malay', 'malay-iso-8859-1', 'ms'),
'nl-utf-8' => array('nl([-_][[:alpha:]]{2})?|dutch', 'dutch-utf-8', 'nl'),
'nl-iso-8859-1'=> array('nl([-_][[:alpha:]]{2})?|dutch', 'dutch-iso-8859-1', 'nl'),
'no-utf-8' => array('no|norwegian', 'norwegian-utf-8', 'no'),
'no-iso-8859-1'=> array('no|norwegian', 'norwegian-iso-8859-1', 'no'),
'pl-utf-8' => array('pl|polish', 'polish-utf-8', 'pl'),
'pl-iso-8859-2'=> array('pl|polish', 'polish-iso-8859-2', 'pl'),
'pt-br-utf-8' => array('pt[-_]br|brazilian portuguese', 'brazilian_portuguese-utf-8', 'pt-BR'),
'pt-br-iso-8859-1' => array('pt[-_]br|brazilian portuguese', 'brazilian_portuguese-iso-8859-1', 'pt-BR'),
'pt-utf-8' => array('pt([-_][[:alpha:]]{2})?|portuguese', 'portuguese-utf-8', 'pt'),
'pt-iso-8859-1'=> array('pt([-_][[:alpha:]]{2})?|portuguese', 'portuguese-iso-8859-1', 'pt'),
'ro-utf-8' => array('ro|romanian', 'romanian-utf-8', 'ro'),
'ro-iso-8859-1'=> array('ro|romanian', 'romanian-iso-8859-1', 'ro'),
'ru-win1251' => array('ru|russian', 'russian-windows-1251', 'ru'),
'ru-utf-8' => array('ru|russian', 'russian-utf-8', 'ru'),
'ru-cp-866' => array('ru|russian', 'russian-cp-866', 'ru'),
'ru-koi8-r' => array('ru|russian', 'russian-koi8-r', 'ru'),
'sk-utf-8' => array('sk|slovak', 'slovak-utf-8', 'sk'),
'sk-iso-8859-2'=> array('sk|slovak', 'slovak-iso-8859-2', 'sk'),
'sk-win1250' => array('sk|slovak', 'slovak-windows-1250', 'sk'),
'sl-utf-8' => array('sl|slovenian', 'slovenian-utf-8', 'sl'),
'sl-iso-8859-2'=> array('sl|slovenian', 'slovenian-iso-8859-2', 'sl'),
'sl-win1250' => array('sl|slovenian', 'slovenian-windows-1250', 'sl'),
'sq-utf-8' => array('sq|albanian', 'albanian-utf-8', 'sq'),
'sq-iso-8859-1'=> array('sq|albanian', 'albanian-iso-8859-1', 'sq'),
'sr-utf-8' => array('sr|serbian', 'serbian_cyrillic-utf-8', 'sr'),
'sr-win1251' => array('sr|serbian', 'serbian_cyrillic-windows-1251', 'sr'),
'sr-lat-utf-8' => array('sr[-_]lat|serbian latin', 'serbian_latin-utf-8', 'sr-lat'),
'sr-lat-win1250'=> array('sr[-_]lat|serbian latin', 'serbian_latin-windows-1250', 'sr-lat'),
'sv-utf-8' => array('sv|swedish', 'swedish-utf-8', 'sv'),
'sv-iso-8859-1'=> array('sv|swedish', 'swedish-iso-8859-1', 'sv'),
'th-utf-8' => array('th|thai', 'thai-utf-8', 'th'),
'th-tis-620' => array('th|thai', 'thai-tis-620', 'th'),
'tr-utf-8' => array('tr|turkish', 'turkish-utf-8', 'tr'),
'tr-iso-8859-9'=> array('tr|turkish', 'turkish-iso-8859-9', 'tr'),
'uk-utf-8' => array('uk|ukrainian', 'ukrainian-utf-8', 'uk'),
'uk-win1251' => array('uk|ukrainian', 'ukrainian-windows-1251', 'uk'),
'zh-tw-utf-8' => array('zh[-_]tw|chinese traditional', 'chinese_big5-utf-8', 'zh-TW'),
'zh-tw' => array('zh[-_]tw|chinese traditional', 'chinese_big5', 'zh-TW'),
'zh-utf-8' => array('zh|chinese simplified', 'chinese_gb-utf-8', 'zh'),
'zh' => array('zh|zh[-_]cn|chinese simplified', 'chinese_gb', 'zh')
);
$this->enum_langs( );
//$this->setLanguage();
}
function enum_langs()
{
$this->catalog_languages = array();
$source = $this->base_dir;
if (false==($handle = opendir($source)))return false;
if ($source[strlen($source) - 1] != DIRECTORY_SEPARATOR) $source .= DIRECTORY_SEPARATOR;
while (false !== ($file = readdir($handle))){
if ( $file == '.' || $file == '..' ) continue;
$tmpFileName = $this->base_dir . '/' . $file;
if ( is_file( $tmpFileName ) )
{
$this->catalog_languages[] = preg_replace ("/\.inc\.php$/i","",basename($tmpFileName));
}
}
closedir( $handle );
}
function setLanguage()
{
if (isset($_GET) && !empty($_GET['lang'])) {
$this->lang = $_GET['lang'];
}
else if (isset($_POST) && !empty($_POST['lang'])) {
$this->lang = $_POST['lang'];
}
else if (isset($_COOKIE) && !empty($_COOKIE['lang'])) {
$this->lang = $_COOKIE['lang'];
}
else if(DEFAULT_LANGUAGE) $this->lang = DEFAULT_LANGUAGE;
else $this->getBrowseLang();
setcookie("lang",$this->lang,time()+1728000,HTTP_COOKIE_PATH,HTTP_COOKIE_DOMAIN) ;
if (!empty($this->lang) && in_array($this->lang,$this->catalog_languages)) {
$this->lang = '';
}
if (!defined('CHARSET'))define( 'CHARSET', DEFAULT_CHARSET );
define( 'LANGUAGE', $this->lang);
define( 'LANGUAGE_DIRNAME', $this->available_languages[$this->lang][1]);
}
function getLangfile()
{
//if (empty($this->lang)) $this->lang = DEFAULT_LANGUAGE;
$lang_file = $this->base_dir . $this->available_languages[$this->lang][1] . '.inc.php';
if ( !is_file( $lang_file ) ) {
die( "File ".$lang_file." is not normal file. \n<br><br>File: ". __FILE__.". \n<br>Line: ". __LINE__ );
}
return $lang_file;
//require_once($lang_file);
}
function getLang()
{
return $this->available_languages[$this->lang][1];
}
function getBrowseLang()
{
$l = getenv('HTTP_ACCEPT_LANGUAGE');
if (empty($this->lang) && !empty($l)) {
$accepted = explode(',', $l);
$acceptedCnt = count($accepted);
for ($i = 0; $i < $acceptedCnt && empty($this->lang); $i++) {
$this->langDetect($accepted[$i], 1);
}
}
$a = getenv('HTTP_USER_AGENT');
if (empty($this->lang) && !empty($a)) {
$this->langDetect($a, 2);
}
}
function langDetect($str = '', $envType = '')
{
foreach($this->available_languages AS $key => $value) {
if (($envType == 1 && eregi('^(' . $value[0] . ')(;q=[0-9]\\.[0-9])?$', $str))
|| ($envType == 2 && eregi('(\(|\[|;[[:space:]])(' . $value[0] . ')(;|\]|\))', $str))) {
$this->lang = $key;
break;
}
}
}
function load_words( $area, $export_array = false )
{
$lang_area_file = $this->base_dir . $this->available_languages[$this->lang][1] . '/' . $area . '.inc.php';
if ( !is_file( $lang_area_file ) ) {
die( sprintf( 'Language areas \'%s\' not found', $area ) );
}
include( $lang_area_file );
if ( $system_err_msg ) {
if ( $export_array ) return $system_err_msg;
foreach( $system_err_msg as $k => $v ) {
define( $k, $v );
}
unset( $system_err_msg );
}
}
function langSelection()
{
$vars = array("af-iso-8859-1"
,"sq-iso-8859-1"
,"ar-win1256"
,"az-iso-8859-9"
,"eu-iso-8859-1"
,"bs-win1250"
,"pt-br-iso-8859-1"
,"bg-koi8-r"
,"bg-win1251"
,"ca-iso-8859-1"
,"zh-tw"
,"zh"
,"hr-iso-8859-2"
,"hr-win1250"
,"cs-iso-8859-2"
,"cs-win1250"
,"da-iso-8859-1"
,"nl-iso-8859-1"
,"en-iso-8859-1"
,"et-iso-8859-1"
,"fi-iso-8859-1"
,"fr-iso-8859-1"
,"gl-iso-8859-1"
,"de-iso-8859-1"
,"el-iso-8859-7"
,"he-iso-8859-8-i"
,"hu-iso-8859-2"
,"id-iso-8859-1"
,"it-iso-8859-1"
,"ja-euc"
,"ja-sjis"
,"ko-ks_c_5601-1987"
,"lv-win1257"
,"lt-win1257"
,"ms-iso-8859-1"
,"no-iso-8859-1"
,"fa-win1256"
,"pl-iso-8859-2"
,"pt-iso-8859-1"
,"ro-iso-8859-1"
,"ru-dos-866"
,"ru-koi8-r"
,"ru-win1251"
,"sr-win1251"
,"sr-lat-win1250"
,"sk-iso-8859-2"
,"sk-win1250"
,"sl-iso-8859-2"
,"sl-win1250"
,"es-iso-8859-1"
,"sv-iso-8859-1"
,"th-tis-620"
,"tr-iso-8859-9"
,"uk-win1251"
);
$txts = array("Afrikaans (af-iso-8859-1)"
,"Albanian (sq-iso-8859-1)"
,"Arabic (ar-win1256)"
,"Azerbaijani (az-iso-8859-9)"
,"Basque (eu-iso-8859-1)"
,"Bosnian (bs-win1250)"
,"Brazilian portuguese (pt-br-iso-8859-1)"
,"Bulgarian (bg-koi8-r)"
,"Bulgarian (bg-win1251)"
,"Catalan (ca-iso-8859-1)"
,"Chinese traditional (zh-tw)"
,"Chinese simplified (zh)"
,"Croatian (hr-iso-8859-2)"
,"Croatian (hr-win1250)"
,"Czech (cs-iso-8859-2)"
,"Czech (cs-win1250)"
,"Danish (da-iso-8859-1)"
,"Dutch (nl-iso-8859-1)"
,"English (en-iso-8859-1)"
,"Estonian (et-iso-8859-1)"
,"Finnish (fi-iso-8859-1)"
,"French (fr-iso-8859-1)"
,"Galician (gl-iso-8859-1)"
,"German (de-iso-8859-1)"
,"Greek (el-iso-8859-7)"
,"Hebrew (he-iso-8859-8-i)"
,"Hungarian (hu-iso-8859-2)"
,"Indonesian (id-iso-8859-1)"
,"Italian (it-iso-8859-1)"
,"Japanese (ja-euc)"
,"Japanese (ja-sjis)"
,"Korean (ko-ks_c_5601-1987)"
,"Latvian (lv-win1257)"
,"Lithuanian (lt-win1257)"
,"Malay (ms-iso-8859-1)"
,"Norwegian (no-iso-8859-1)"
,"Persian (fa-win1256)"
,"Polish (pl-iso-8859-2)"
,"Portuguese (pt-iso-8859-1)"
,"Romanian (ro-iso-8859-1)"
,"Russian (ru-dos-866)"
,"Russian (ru-koi8-r)"
,"Russian (ru-win1251)"
,"Serbian (sr-win1251)"
,"Serbian latin (sr-lat-win1250)"
,"Slovak (sk-iso-8859-2)"
,"Slovak (sk-win1250)"
,"Slovenian (sl-iso-8859-2)"
,"Slovenian (sl-win1250)"
,"Spanish (es-iso-8859-1)"
,"Swedish (sv-iso-8859-1)"
,"Thai (th-tis-620)"
,"Turkish (tr-iso-8859-9)"
,"Ukrainian (uk-win1251)"
);
$list = $this->objOutputHtml->selection('lang',$vars,$txts,$this->lang,'onChange="this.form.submit();"');
return $list;
}
}
} // end if defined
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -