Maison  >  Article  >  développement back-end  >  PHP obtient/définit la classe de langage de la page d'accès utilisateur

PHP obtient/définit la classe de langage de la page d'accès utilisateur

黄舟
黄舟original
2017-02-17 10:08:471145parcourir

La classe de langue utilisateur obtient/définit la langue de la page consultée par l'utilisateur. Si l'utilisateur ne définit pas la langue d'accès, la langue d'acceptation est lue. Afficher la page correspondante selon la langue sélectionnée par l'utilisateur (Anglais, Chinois simplifié, Chinois traditionnel)


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

?>


démo


<?php

require "UserLang.class.php";

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

?>


Ce qui précède est le contenu de php obtenant/définissant la langue de la page d'accès utilisateur. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www. .php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn