Home  >  Article  >  Backend Development  >  PHP gets/sets the language class of the user access page

PHP gets/sets the language class of the user access page

黄舟
黄舟Original
2017-02-17 10:08:471136browse

User Language Class gets/sets the language of the page accessed by the user. If the user does not set the access language, Accept-Language is read. Display the corresponding page according to the language selected by the user (English, Simplified Chinese, Traditional Chinese)


UserLang.class.php


<?php
/** User Language Class 获取/设置用户访问的页面语言,如果用户没有设置访问语言,则读取Accept-Language
*   Date:   2014-05-26
*   Author: fdipzone
*   Ver:    1.0
*
*   Func:
*   public  get               获取用户访问语言
*   public  set               设置用户访问语言
*   private getAcceptLanguage 获取HTTP_ACCEPT_LANGUAGE
*/

class UserLang{ // class start

    private $name = &#39;userlang&#39;; // cookie name
    private $expire = 2592000;  // cookie expire 30 days


    /** 初始化
    * @param String $name   cookie name
    * @param int    $expire cookie expire
    */
    public function __construct($name=&#39;&#39;, $expire=null){

        // 设置cookie name
        if($name!=&#39;&#39;){
            $this->name = $name;
        }

        // 设置cookie expire
        if(is_numeric($expire) && $expire>0){
            $this->expire = intval($expire);
        }

    }


    /** 获取用户访问语言 */
    public function get(){

        // 判断用户是否有设置过语言
        if(isset($_COOKIE[$this->name])){
            $lang = $_COOKIE[$this->name];
        }else{
            $lang = $this->getAcceptLanguage();
        }

        return $lang;

    }


    /** 设置用户访问语言
    * @param String $lang 用户访问语言
    */
    public function set($lang=&#39;&#39;){

        $lang = strtolower($lang);

        // 只能是英文,简体中文,繁体中文
        if(in_array($lang, array(&#39;en&#39;,&#39;sc&#39;,&#39;tc&#39;))){
            setcookie($this->name, $lang, time()+$this->expire);
        }

    }


    /** 获取HTTP_ACCEPT_LANGUAGE */
    private function getAcceptLanguage(){

        $lang = strtolower($_SERVER[&#39;HTTP_ACCEPT_LANGUAGE&#39;]);

        if(in_array(substr($lang,0,5), array(&#39;zh-tw&#39;,&#39;zh_hk&#39;))){
            $lang = &#39;tc&#39;;
        }elseif(in_array(substr($lang,0,5), array(&#39;zh-cn&#39;,&#39;zh-sg&#39;))){
            $lang = &#39;sc&#39;;
        }else{
            $lang = &#39;en&#39;;
        }

        return $lang;

    }


} // class end

?>


demo


<?php

require "UserLang.class.php";

$obj = new UserLang(&#39;sitelang&#39;, 3600);
echo $obj->get().&#39;<br>&#39;;

?>


The above is the content of PHP getting/setting the language of the user access page. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


Statement:
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