개발 꿀팁/PHP

php 사용자 접근 페이지 언어 클래스 가져오기/ 설정

Jammie 2022. 8. 9. 14:31
반응형

User Language Class 사용자가 접근할 수 있는 페이지 언어를 가져오거나 설정합니다. 사용자가 접근 언어를 설정하지 않은 경우 Accept-Language를 읽습니다.사용자가 선택한 언어에 따라 해당 페이지 표시(영어, 간체 중국어, 번체 중국어)


UserLang.class.phpdemo

<?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 = 'userlang'; // cookie name
    private $expire = 2592000;  // cookie expire 30 days
 
 
    /** 초기화
    * @param String $name   cookie name
    * @param int    $expire cookie expire
    */
    public function __construct($name='', $expire=null){
 
        // 쿠키 설정하기 name
        if($name!=''){
            $this->name = $name;
        }
 
        // 쿠키 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=''){
 
        $lang = strtolower($lang);
 
        // 다만 영어, 간체 중국어, 번체 중국어이다
        if(in_array($lang, array('en','sc','tc'))){
            setcookie($this->name, $lang, time()+$this->expire);
        }
 
    }
 
 
    /**HTTP_ACCEPT_LANGUAGE 가져오기 */
    private function getAcceptLanguage(){
 
        $lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);
 
        if(in_array(substr($lang,0,5), array('zh-tw','zh_hk'))){
            $lang = 'tc';
        }elseif(in_array(substr($lang,0,5), array('zh-cn','zh-sg'))){
            $lang = 'sc';
        }else{
            $lang = 'en';
        }
 
        return $lang;
 
    }
 
 
} // class end
 
?>

 

demo

<?php
 
require "UserLang.class.php";
 
$obj = new UserLang('sitelang', 3600);
echo $obj->get().'<br>';
 
?>
반응형