반응형
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>';
?>
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php CSV 추상화 내보내기 (0) | 2022.08.10 |
---|---|
php Time 페이지 실행 시간 모니터링 클래스 (0) | 2022.08.09 |
Laravel의 Json Response에 의한 PHP 기반 인식 (0) | 2022.08.09 |
PHP로 명령줄에서 그림 보기 (0) | 2022.08.09 |
php 인증 코드를 만드는 데 사용되는 함수 (0) | 2022.08.09 |