目录结构: //============================================ 文件内容: /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代码
-
-
$languages = array ();
-
$languages ['zh-cn'] ["name"] = "china";
-
$languages ["zh-cn"] ["image"] = "flag1.jpg";
-
$languages ["en"] ["name"] = "english";
-
$languages ["en"] ["image"] = "flag2.jpg";
-
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/" . $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代码
-
-
$language_message["china"]="中文";
-
$language_message["english"]="英文";
-
?>
/include/language/en/language.php
Java代码
-
-
$language_message["china"]="china";
-
$language_message["english"]="english";
-
?>
/chang_language.php
Java代码
-
-
include_once 'header.php';
-
include_once 'header.tpl';
-
$language_file=$lang->getFileDir("language.php");
-
include($language_file);
-
?>
-
<script>"javascript"</script>>
-
var domain="getDomain();?>";
-
var cur_language="";
-
function change_language(lan)
-
{
-
alert("lan");
-
setCookie("lang",lan,1,"/",domain,false);
-
if(cur_language==lan)
-
{
-
return ;
-
}
-
if(!$_POST){ ?>
-
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' : '' );
-
-
}
-
-
-
-
-
-
foreach($languages as $key=>$value)
-
{
-
echo '
- ,$key,'\')"';
-
echo '>',$language_message[$languages[$key]["name"]],' ,$languages[$key]["image"],'" border="0"/>
'; -
}
-
?>
-
/header.php
Java代码
-
-
include_once (dirname ( __FILE__ ) . "/include/language.php");
-
$lang = new Language ( );
-
//print_r($lang->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代码
-
-
include_once 'header.php';
-
include_once 'header.tpl';
-
$language_file = $lang->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地址可以使用。
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn