123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- <?php
- $languages = array(
- 'en-US' => array('English', 'English'),
- 'zh-CN' => array('简体中文', 'Chinese_simplified'),
- 'zh-SG' => array('简体中文(新加坡)', 'Chinese_simplified'),
- 'zh-HK' => array('繁體中文(香港)', 'Chinese_traditional'),
- 'zh-TW' => array('繁體中文(台湾)', 'Chinese_traditional'),
- 'af' => array('Afrikaans', 'Afrikaans'),
- 'sq' => array('የአልባኒያ', 'Albanian'),
- 'am' => array('Amharic', 'Amharic'),
- 'ar' => array('Arabic', 'Arabic'),
- 'hy' => array('Armenian', 'Armenian'),
- 'az' => array('Azərbaycan', 'Azeerbaijani'),
- 'eu' => array('Basque', 'Basque'),
- 'be' => array('Belarusian', 'Belarusian'),
- 'bn' => array('Bengali', 'Bengali'),
- 'bs' => array('Bosnian', 'Bosnian'),
- 'bg' => array('Bulgarian', 'Bulgarian'),
- 'my' => array('Burmese', 'Burmese'),
- 'ca' => array('Catalan', 'Catalan'),
- 'ce' => array('Cebuano', 'Cebuano'), // 宿务语
- 'ch' => array('Chichewa', 'Chichewa'),
- 'co' => array('Corsican', 'Corsican'),
- 'hr' => array('Croatian', 'Croatian'),
- 'cs' => array('Czech', 'Czech'),
- 'da' => array('Danish', 'Danish'),
- 'nl' => array('Dutch', 'Dutch'),
- 'eo' => array('Esperanto', 'Esperanto'),
- 'et' => array('Estonian', 'Estonian'),
- 'fa' => array('Farsi', 'Farsi'),
- 'fil' => array('Filipino', 'Filipino'),
- 'fi' => array('Finnish', 'Finnish'),
- 'fr' => array('français', 'French'),
- 'fy' => array('Frisian', 'Frisian'),
- 'gl' => array('Galician', 'Galician'),
- 'ka' => array('Georgian', 'Georgian'),
- 'de' => array('Deutsch', 'German'),
- 'el' => array('Greek', 'Greek'),
- 'gu' => array('Gujarati', 'Gujarati'),
- 'ko' => array('Haitian Creole', 'Haitian Creole'),
- 'ha' => array('Hausa', 'Hausa'),
- 'haw' => array('Hawaiian', 'Hawaiian'),
- 'he' => array('Hebrew', 'Hebrew'),
- 'hi' => array('Hindi', 'Hindi'),
- 'hm' => array('Hmong', 'Hmong'),
- 'hu' => array('Hungarian', 'Hungarian'),
- 'is' => array('Icelandic', 'Icelandic'),
- 'ig' => array('Igbo', 'Igbo'),
- 'id' => array('Indonesian', 'Indonesian'),
- 'ga' => array('Irish', 'Irish'),
- 'it' => array('Italian', 'Italian'),
- 'jp' => array('日本語', 'Japanese'),
- 'jv' => array('Wong Jawa', 'Javanese'),
- 'kn' => array('Kannada', 'Kannada'),
- 'kk' => array('Kazakh', 'Kazakh'),
- 'kh' => array('Khmer', 'Khmer'),
- 'ko' => array('한국의', 'Korean'),
- 'ku' => array('Kurdish', 'Kurdish'),
- 'kz' => array('Kyrgyz', 'Kyrgyz'),
- 'lo' => array('ພາສາລາວ', 'Lao'),
- 'la' => array('Latinae', 'Latin'),
- 'lv' => array('Latvian', 'Latvian'),
- 'lt' => array('Lithuanian', 'Lithuanian'),
- 'lu' => array('Luxembourgish', 'Luxembourgish'),
- 'mk' => array('Macedonian', 'Macedonian'),
- 'ma' => array('Malagasy', 'Malagasy'),
- 'ms' => array('Malay', 'Malay'),
- 'ml' => array('Malayalam', 'Malayalam'),
- 'mt' => array('Maltese', 'Maltese'),
- 'ma' => array('Maori', 'Maori'),
- 'mr' => array('Marathi', 'Marathi'),
- 'mn' => array('Mongolian', 'Mongolian'),
- 'ne' => array('Nepali', 'Nepali'),
- 'no' => array('Norwegian', 'Norwegian'),
- 'pa' => array('Pashto', 'Pashto'),
- 'pe' => array('Persian', 'Persian'),
- 'po' => array('Polish', 'Polish'),
- 'pg' => array('Português', 'Portuguese'),
- 'pu' => array('Punjabi', 'Punjabi'),
- 'ro' => array('Romanian', 'Romanian'),
- 'ru' => array('Russian', 'Russian'),
- 'sa' => array('Samoan', 'Samoan'),
- 'gd' => array('Scots Gaelic', 'Scots Gaelic'),
- 'sr' => array('Serbian', 'Serbian'),
- 'se' => array('Sesotho', 'Sesotho'),
- 'sh' => array('Shona', 'Shona'),
- 'si' => array('Sindhi', 'Sindhi'),
- 'sin' => array('Sinhala', 'Sinhala'),
- 'sk' => array('Slovak', 'Slovak'),
- 'sl' => array('Slovenian', 'Slovenian'),
- 'so' => array('Somali', 'Somali'),
- 'es' => array('Spanish', 'Spanish'),
- 'su' => array('Sundanese', 'Sundanese'),
- 'sw' => array('Swahili', 'Swahili'),
- 'sv' => array('Swedish', 'Swedish'),
- 'tj' => array('Tajik', 'Tajik'),
- 'ta' => array('Tamil', 'Tamil'),
- 'te' => array('Telugu', 'Telugu'),
- 'ts' => array('Thai', 'Thai'),
- 'tu' => array('Turkish', 'Turkish'),
- 'uk' => array('Ukrainian', 'Ukrainian'),
- 'ur' => array('Urdu', 'Urdu'),
- 'uz' => array('Uzbek', 'Uzbek'),
- 'vi' => array('Vietnamese', 'Vietnamese'),
- 'we' => array('Welsh', 'Welsh'),
- 'xh' => array('Xhosa', 'Xhosa'),
- 'yi' => array('Yiddish', 'Yiddish'),
- 'yo' => array('Yorùbá', 'Yoruba'),
- 'zu' => array('Zulu', 'Zulu')
- );
- class Language
- {
- public $language_area;
- public $language_country;
- public $language_dir;
- public $dir;
- public function __construct()
- {
- $this->dir = str_replace("\\", "/", dirname(__FILE__)) . "/language/";
- $this->initDefaultLanguage();
- if (empty($this->language_country) && !empty($this->language_area)) {
- $this->language_country = substr($this->language_area, 0, strpos($this->language_area, "-"));
- }
- $this->initLanguageDir();
- }
- /*
- 取得翻译文件的绝对路径
- */
- public function getFileDir($file)
- {
- $dir = $this->dir;
- if (file_exists($this->getLanguageDir() . $file)) {
- return $this->getLanguageDir() . $file;
- } else {
- if (file_exists($dir . $this->language_area . "/" . $file)) {
- return $dir . $this->language_area . "/" . $file;
- } else {
- if (file_exists($dir . $this->language_country . "/" . $file)) {
- return $dir . $this->language_country . "/" . $file;
- } else {
- // if (file_exists($dir . "en-US/" . $file)) {
- return $dir . "en-US/" . $file;
- // } else {
- // return false;
- // }
- }
- }
- }
- }
- /*
- 取得当前使用语言的文件夹
- */
- public function getLanguageDir()
- {
- return $this->language_dir;
- }
- /*
- 初始化语言文件夹
- */
- private function initLanguageDir()
- {
- $dir = $this->dir;
- if (file_exists($dir . $this->language_area) && !empty($this->language_area)) {
- $this->language_dir = $dir . $this->language_area . '/';
- } else {
- if (file_exists($dir . $this->language_country) && !empty($this->language_country)) {
- $this->language_dir = $dir . $this->language_country . '/';
- } else {
- $this->language_dir = $dir . 'en-US/';
- }
- }
- }
- /*
- 初始化默认语言
- */
- public function initDefaultLanguage()
- {
- if ($this->getCookieLanguage()) {
- return;
- }
- $language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
- preg_match_all("/[\\w-]+/", $language, $language);
- $this->language_area = $language[0][0];
- @($this->language_country = $language[0][1]);
- $this->setCookieLanguage();
- }
- /*
- 从cookie中导入语言种类
- */
- public function getCookieLanguage()
- {
- if (!@empty($_COOKIE['lang'])) {
- $language = $_COOKIE['lang'];
- if (strpos($language, "-")) {
- $this->language_area = $language;
- } else {
- $this->language_country = $language;
- }
- return true;
- }
- return false;
- }
- /*
- 把当前的语言种类放到cookie中
- */
- public function setCookieLanguage($lang = "")
- {
- if (empty($lang)) {
- $lang = $this->language_area;
- }
- if (empty($lang)) {
- $lang = $this->language_country;
- }
- if (empty($lang)) {
- return false;
- }
- setcookie("lang", $lang, time() + 365 * 24 * 3600, "/", $this->getDomain());
- return true;
- }
- public function getDomain()
- {
- if (empty($this->domain)) {
- $domain = $_SERVER['SERVER_NAME'];
- if (strcasecmp($domain, "localhost") === 0) {
- $this->domain = $domain;
- return $this->domain;
- }
- if (preg_match("/^(\\d+\\.){3}\\d+\$/", $domain, $domain_temp)) {
- $this->domain = $domain_temp[0];
- return $this->domain;
- }
- preg_match_all("/\\w+\\.\\w+\$/", $domain, $domain);
- $this->domain = $domain[0][0];
- return $this->domain;
- } else {
- return $this->domain;
- }
- }
- }
|