Rumah >php教程 >php手册 >php 多语言切换

php 多语言切换

WBOY
WBOYasal
2016-06-06 19:54:201763semak imbas

目录结构: //============================================ 文件内容: /include/language.php Java代码 ?php $languages=array(); $languages[ 'zh-cn' ][ name ]= china ; $languages[ zh-cn ][ image ]= flag1.jpg ; $languages[ en ][ name ]= english

目录结构:

 

php 多语言切换

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

文件内容:

/include/language.php

 

Java代码  php 多语言切换

  1. $languages = array ();  
  2. $languages ['zh-cn'] ["name"] = "china";  
  3. $languages ["zh-cn"] ["image"] = "flag1.jpg";  
  4. $languages ["en"] ["name"] = "english";  
  5. $languages ["en"] ["image"] = "flag2.jpg";  
  6. class Language {  
  7.     public $language_area;  
  8.     public $language_country;  
  9.     public $language_dir;  
  10.     public $dir;  
  11.     public function __construct() {  
  12.         $this->dir = str_replace ( "\\", "/", dirname ( __FILE__ ) ) . "/language/";  
  13.         $this->initDefaultLanguage ();  
  14.         if (empty ( $this->language_country ) && ! empty ( $this->language_area )) {  
  15.             $this->language_country = substr ( $this->language_area, 0, strpos ( $this->language_area, "-" ) );  
  16.         }  
  17.         $this->initLanguageDir ();  
  18.     }  
  19.       
  20.     /* 
  21.     取得语言文件的绝对路径 
  22.     */  
  23.     public function getFileDir($file) {  
  24.         $dir = $this->dir;  
  25.         if (file_exists ( $this->getLanguageDir () . $file )) {  
  26.             return $this->getLanguageDir () . $file;  
  27.         } else if (file_exists ( $dir . $this->language_area . "/" . $file )) {  
  28.             return $dir . $this->language_area . "/" . $file;  
  29.         } else if (file_exists ( $dir . $this->language_country . "/" . $file )) {  
  30.             return $dir . $this->language_country . "/" . $file;  
  31.         } else if (file_exists ( $dir . "en/" . $file )) {  
  32.             return $dir . "en/" . $file;  
  33.         } else {  
  34.             return false;  
  35.         }  
  36.     }  
  37.     /* 
  38.     取得当前使用语言的文件夹 
  39.     */  
  40.     public function getLanguageDir() {  
  41.         return $this->language_dir;  
  42.     }  
  43.       
  44.     /* 
  45.     初始化语言文件夹 
  46.     */  
  47.     private function initLanguageDir() {  
  48.         $dir = $this->dir;  
  49.         if (file_exists ( $dir . $this->language_area ) && ! empty ( $this->language_area )) {  
  50.             $this->language_dir = $dir . $this->language_area . "/";  
  51.         } else if (file_exists ( $dir . $this->language_country ) && ! empty ( $this->language_country )) {  
  52.             $this->language_dir = $dir . $this->language_country . "/";  
  53.         } else {  
  54.             $this->language_dir = $dir . "en/";  
  55.         }  
  56.     }  
  57.       
  58.     /* 
  59.     初始化默认语言 
  60.     */  
  61.     public function initDefaultLanguage() {  
  62.         if ($this->getCookieLanguage ()) {  
  63.             return;  
  64.         }  
  65.         $language = $_SERVER ['HTTP_ACCEPT_LANGUAGE'];  
  66.         preg_match_all ( "/[\w-]+/", $language, $language );  
  67.         $this->language_area = $language [0] [0];  
  68.         @$this->language_country = $language [0] [1];  
  69.         $this->setCookieLanguage ();  
  70.     }  
  71.       
  72.     /* 
  73.     从cookie中导入语言种类 
  74.     */  
  75.     public function getCookieLanguage() {  
  76.         if (! @empty ( $_COOKIE ['lang'] )) {  
  77.             $language = $_COOKIE ['lang'];  
  78.             if (strpos ( $language, "-" )) {  
  79.                 $this->language_area = $language;  
  80.             } else {  
  81.                 $this->language_country = $language;  
  82.             }  
  83.             return true;  
  84.         }  
  85.         return false;  
  86.     }  
  87.       
  88.     /* 
  89.        把当前的语言种类放到cookie中 
  90.     */  
  91.     public function setCookieLanguage($lang = "") {  
  92.         if (empty ( $lang )) {  
  93.             $lang = $this->language_area;  
  94.         }  
  95.         if (empty ( $lang )) {  
  96.             $lang = $this->language_country;  
  97.         }  
  98.         if (empty ( $lang )) {  
  99.             return false;  
  100.         }  
  101.         setcookie ( "lang", $lang, time () + 365 * 24 * 3600"/", $this->getDomain () );  
  102.         return true;  
  103.     }  
  104.       
  105.     public function getDomain() {  
  106.         if (empty ( $this->domain )) {  
  107.             $domain = $_SERVER ['SERVER_NAME'];  
  108.             if (strcasecmp ( $domain, "localhost" ) === 0) {  
  109.                 $this->domain = $domain;  
  110.                 return $this->domain;  
  111.             }  
  112.             if (preg_match ( "/^(\d+\.){3}\d+$/", $domain, $domain_temp )) {  
  113.                 $this->domain = $domain_temp [0];  
  114.                 return $this->domain;  
  115.             }  
  116.             preg_match_all ( "/\w+\.\w+$/", $domain, $domain );  
  117.             $this->domain = $domain [0] [0];  
  118.             return $this->domain;  
  119.         } else {  
  120.             return $this->domain;  
  121.         }  
  122.     }  
  123. }  
  124. ?>  
 

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

Java代码  php 多语言切换

  1. $language_message["china"]="中文";  
  2. $language_message["english"]="英文";  
  3. ?>  
 

/include/language/en/language.php

Java代码  php 多语言切换

  1. $language_message["china"]="china";  
  2. $language_message["english"]="english";  
  3. ?>  

 /chang_language.php

Java代码  php 多语言切换

  1. include_once 'header.php';  
  2. include_once 'header.tpl';  
  3. $language_file=$lang->getFileDir("language.php");  
  4. include($language_file);  
  5. ?>  
  6. <script>"javascript"</script>>  
  7. var domain="getDomain();?>";  
  8. var cur_language="";  
  9. function change_language(lan)  
  10. {  
  11.     alert("lan");  
  12.     setCookie("lang",lan,1,"/",domain,false);  
  13.      if(cur_language==lan)  
  14.      {  
  15.          return ;  
  16.      }  
  17.      if(!$_POST){ ?>  
  18.      document.location.reload();  
  19.        
  20. }  
  21.   
  22. // writeCookie("myCookie", "my name", 24);  
  23.   
  24. // Stores the string "my name" in the cookie "myCookie" which expires after 24 hours.  
  25.   
  26.   
  27. function setCookie( name, value, expires, path, domain, secure ) {  
  28.   
  29.     var today = new Date();  
  30.       
  31.     today.setTime( today.getTime() );  
  32.       
  33.     if ( expires ) {  
  34.       
  35.     expires = expires * 1000 * 60 * 60 * 24;  
  36.       
  37.     }  
  38.       
  39.     var expires_date = new Date( today.getTime() + (expires) );  
  40.       
  41.     document.cookie = name+'='+escape( value ) +  
  42.       
  43.     ( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()  
  44.       
  45.     ( ( path ) ? ';path=' + path : '' ) +  
  46.       
  47.     ( ( domain ) ? ';domain=' + domain : '' ) +  
  48.       
  49.     ( ( secure ) ? ';secure' : '' );  
  50.   
  51. }  
  52.   
  53.   
  54.   
    •   
  55.  
  56. foreach($languages as $key=>$value)  
  57. {  
  58.   echo '
  59. ,$key,'\')"';  
  60.    echo '>',$language_message[$languages[$key]["name"]],php 多语言切换,$languages[$key]["image"],'" border="0"/>
  61. ';  
  62. }  
  63. ?>  
  64.   

 /header.php

Java代码  php 多语言切换

  1. include_once (dirname ( __FILE__ ) . "/include/language.php");  
  2. $lang = new Language ( );  
  3. //print_r($lang->language_area);  
  4. $current_language = getCurrentLanguage ();  
  5. //print_r($current_language);  
  6. function getCurrentLanguage() {  
  7.     global $lang, $languages;  
  8.     if (array_key_exists ( $lang->language_area, $languages )) {  
  9.         return $lang->language_area;  
  10.     } else if (array_key_exists ( $lang->language_country, $languages )) {  
  11.         return $lang->language_country;  
  12.     } else {  
  13.         return "en";  
  14.     }  
  15.   
  16. }  
  17. ?>  

 /header.tpl

Html代码  php 多语言切换

  1. nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. html xmlns="http://www.w3.org/1999/xhtml">  
  3. head>  
  4. meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. title>多语言测试title>  
  6. link href="css/css.css" rel="stylesheet" type="text/css" />  
  7. script type="text/javascript" src="javascript/prototype_1_6.js">script>  
  8. head>  

 /test_language.php

Java代码  php 多语言切换

  1. include_once 'header.php';  
  2. include_once 'header.tpl';  
  3. $language_file = $lang->getFileDir ( "speak_language.php" );  
  4. require_once ($language_file);  
  5.   
  6. print_r($speak_language_message);  
  7. ?>  
 

测试地址为:http://127.0.0.1/multiple_language/chang_language.php

localhost不能使用,正式域名及IP地址可以使用。

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:LAMP之安装phpArtikel seterusnya:[转]PHP获取IP地址