快捷导航

php多语言切换

[复制链接]
查看: 4915|回复: 0

3768

主题

9666

狗粮

6

精华

管理员

积分
28103

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2021-7-3 15:55:14 | 显示全部楼层 |阅读模式
  • <?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() {  
  •         $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代码  [url=][/url]
    • <?php
    • $language_message["china"]="中文";  
    • $language_message["english"]="英文";  
    • ?>

    /include/language/en/language.php
  • Java代码  [url=][/url]
    • <?php
    • $language_message["china"]="china";  
    • $language_message["english"]="english";  
    • ?>

    /chang_language.php
  • Java代码  [url=][/url]
    • <?php
    • 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://"';  
    •    echo '>',$language_message[$languages[$key]["name"]],' <img src="images/',$languages[$key]["image"],'" border="0"/></a></li>';  
    • }
    • ?>
    • </ul>

    /header.php

    • <?php
    • 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代码  [url=][/url]

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

    /test_language.php


    • <?php
    • include_once 'header.php';  
    • include_once 'header.tpl';  
    • $language_file = $lang->getFileDir ( "speak_language.php" );  
    • require_once ($language_file);
    • print_r($speak_language_message);
    • ?>





温馨提示:
1、本站所有信息都来源于互联网有违法信息与本网站立场无关。
2、当有关部门,发现本论坛有违规,违法内容时,可联系站长删除,否则本站不承担任何责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
5、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
6、如果使用本帖附件,本站程序只提供学习使用,请24小时内删除!使用者搭建运营触犯法律,违法,违规,本站不承担任何责任。
我是一条可怜的土狗...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩推荐

让创业更简单

  • 反馈建议:xiaotuzi2018@foxmail.com
  • 客服电话:
  • 工作时间:周一到周六

云服务支持

精品资源,快速检索

关注我们

Copyright 小白源码网  Powered by©  技术支持: