Home > php教程 > php手册 > body text

php 多语言切换

WBOY
Release: 2016-06-06 19:54:20
Original
1755 people have browsed it

目录结构: //============================================ 文件内容: /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地址可以使用。

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template