天天看點

多語言國際化1

//============================================

檔案内容:

/include/language.php

多語言國際化1

<?php  

$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() {  

        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 . "/";  

            $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;  

            $lang = $this->language_country;  

        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];  

            preg_match_all ( "/\w+\.\w+$/", $domain, $domain );  

            $this->domain = $domain [0] [0];  

            return $this->domain;  

}  

?>  

 /include/language/zh-cn/language.php

多語言國際化1

<?php   

$language_message["china"]="中文";  

$language_message["english"]="英文";  

 /include/language/en/language.php

多語言國際化1

$language_message["china"]="china";  

$language_message["english"]="english";  

多語言國際化1

include_once 'header.php';  

include_once 'header.tpl';  

$language_file=$lang->getfiledir("language.php");  

include($language_file);  

<script language="javascript">  

var domain="<?php echo $lang->getdomain();?>";  

var cur_language="<?php echo $current_language;?>";  

function change_language(lan)  

{  

    alert("lan");  

    setcookie("lang",lan,1,"/",domain,false);  

     if(cur_language==lan)  

     {  

         return ;  

     }  

     <?php if(!$_post){ ?>  

     document.location.reload();  

     <?php } ?>  

// 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' : '' );  

</script>  

<ul>  

 <?php  

foreach($languages as $key=>$value)  

  echo '<li><a href="javascript://" onclick="change_language(\'',$key,'\')"';  

   echo '>',$language_message[$languages[$key]["name"]],' <img src="images/',$languages[$key]["image"],'" border="0"/></a></li>';  

</ul>  

多語言國際化1

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";  

多語言國際化1

<!doctype 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>  

測試位址為:http://127.0.0.1/multiple_language/chang_language.php

localhost不能使用 ,正式域名及ip位址可以使用。