目录结构: //============================================ 文件内容: /include/language.php java代码 ?php $languages=array(); $languages[ 'zh-cn' ][ name ]= china ; $languages[ zh-cn ][ image ]= flag1.jpg ; $languages[ en ][ name ]= english
目录结构:
//============================================
文件内容:
/include/language.php
java代码
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/ . $file )) { return $dir . en/ . $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/; } } /* 初始化默认语言 */ 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; } } } ?> /include/language/zh-cn/language.php
java代码
/include/language/en/language.php
java代码
/chang_language.php
java代码
getfiledir(language.php); include($language_file); ?> > var domain=getdomain();?>; var cur_language=; function change_language(lan) { alert(lan); setcookie(lang,lan,1,/,domain,false); if(cur_language==lan) { return ; } document.location.reload(); } // writecookie(mycookie, my name, 24); // stores the string my name in the cookie mycookie which expires after 24 hours. function setcookie( name, value, expires, path, domain, secure ) { var today = new date(); today.settime( today.gettime() ); if ( expires ) { expires = expires * 1000 * 60 * 60 * 24; } var expires_date = new date( today.gettime() + (expires) ); document.cookie = name+'='+escape( value ) + ( ( expires ) ? ';expires='+expires_date.togmtstring() : '' ) + //expires.togmtstring() ( ( path ) ? ';path=' + path : '' ) + ( ( domain ) ? ';domain=' + domain : '' ) + ( ( secure ) ? ';secure' : '' ); } $value) { echo ',$key,'\')'; echo '>',$language_message[$languages[$key][name]],' ,$languages[$key][image],' border=0/>'; } ?> /header.php
java代码
language_area); $current_language = getcurrentlanguage (); //print_r($current_language); function getcurrentlanguage() { global $lang, $languages; if (array_key_exists ( $lang->language_area, $languages )) { return $lang->language_area; } else if (array_key_exists ( $lang->language_country, $languages )) { return $lang->language_country; } else { return en; } } ?> /header.tpl
html代码
nbsp;html public -//w3c//dtd xhtml 1.0 transitional//en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd> html xmlns=http://www.w3.org/1999/xhtml> head> meta http-equiv=content-type content=text/html; charset=utf-8 /> title>多语言测试title> link href=css/css.css rel=stylesheet type=text/css /> script type=text/javascript src=javascript/prototype_1_6.js>script> head> /test_language.php
java代码
getfiledir ( speak_language.php ); require_once ($language_file); print_r($speak_language_message); ?> 测试地址为:http://127.0.0.1/multiple_language/chang_language.php
localhost不能使用,正式域名及ip地址可以使用。