⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 language.inc.php

📁 功能齐全
💻 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 + -