🕹 스크립트

다국어

(。θᗨθ。) 2022. 3. 7. 00:18
  • 언어변경 버튼 링크에 자바스크립트 추가
javascript:langChange('ko');
  • 메인 index에 기본 쿠키 설정
<script>
    function setCookie(cName, cValue, cDay) {
        let expire = new Date();
        expire.setDate(expire.getDate() + cDay);
        cookies = cName + '=' + escape(cValue) + '; path=/ '; // 한글 깨짐을 막기위해 escape(cValue)를 합니다.
        // console.log(cookies);
        if (typeof cDay != 'undefined') cookies += ';expires=' + expire.toGMTString() + ';';
        document.cookie = cookies;
    }
	setCookie('clickedlanguage', 'ko', 1)
</script>
    • 언어 변경 및 쿠키 생성스크립트
//언어변경
function langChange(lang) {
  var thisPathName = window.location.pathname;	//현재 페이지의 경로
  var splitUrl = '';							//현재 페이지 경로를 '/'를 기준으로 쪼개기 위한 변수
  var url = '';									//최종적으로 변경 될 주소

  splitUrl = thisPathName.split('/');			//현재 페이지를 '/'를 기준으로 쪼개기
  splitUrl[1] = lang;							//쪼갠 주소 중 언어별 폴더를 클릭한 언어로 변경 : ex)'en'클릭 시: '/ko/about/...' -> '/en/about/...' 변경
  setCookie('clickedlanguage', lang, 1);

  var thisUrl = window.location.href;

  if (!thisPathName.match('/board/') && thisPathName.match('/index.php')) { // 메인
      window.location.href = window.location.protocol + '//' + window.location.hostname + '/' + splitUrl[1] + '/' + splitUrl[2];
  } else if (!thisPathName.match('/board/')) {	//게시판 제외
      window.location.href = window.location.protocol + '//' + window.location.hostname + '/' + splitUrl[1] + '/' + splitUrl[2] + '/' + splitUrl[3];
  } else if (thisPathName.match('/board/')) {		// 게시판 일 때
      if (thisUrl.match('news')) {
          window.location.href = window.location.protocol + '//' + window.location.hostname + '/board/news_' + splitUrl[1];

      } else if (thisUrl.match('notice')) {
          window.location.href = window.location.protocol + '//' + window.location.hostname + '/board/notice_' + splitUrl[1];

      }
  }

}

// 쿠키 생성 함수
function setCookie(cName, cValue, cDay) {
  var expire = new Date();
  expire.setDate(expire.getDate() + cDay);
  cookies = cName + '=' + escape(cValue) + '; path=/ '; // 한글 깨짐을 막기위해 escape(cValue)를 합니다.
  console.log(cookies);
  if (typeof cDay != 'undefined') cookies += ';expires=' + expire.toGMTString() + ';';
  document.cookie = cookies;
}
  • 다국어별 헤드 및 푸터 지정
<?php

//쿠키얻기
$getCookieLang = $_COOKIE["clickedlanguage"];

// URL에 해당 문자가 들어가 있는지
$thisURL = $_SERVER['REQUEST_URI'];

$thisLangKO = '_ko';
$thisLangEN = '_en';

/////////다국어 관련 , 푸터도 동일하게
if($getCookieLang === "ko"){  //한국어
    include($_SERVER['DOCUMENT_ROOT'].'/ko/inc/inc_head.php');
    include($_SERVER['DOCUMENT_ROOT'].'/ko/inc/inc_gnb.html');
} else if($getCookieLang === "en") {	//영어
	include($_SERVER['DOCUMENT_ROOT'].'/en/inc/inc_head.php');
    include($_SERVER['DOCUMENT_ROOT'].'/en/inc/inc_gnb.html');
} else if(strpos($thisURL, $thisLangKO) !== false) {
	include($_SERVER['DOCUMENT_ROOT'].'/ko/inc/inc_head.php');
    include($_SERVER['DOCUMENT_ROOT'].'/ko/inc/inc_gnb.html');
} else if(strpos($thisURL, $thisLangEN) !== false) {
	include($_SERVER['DOCUMENT_ROOT'].'/en/inc/inc_head.php');
    include($_SERVER['DOCUMENT_ROOT'].'/en/inc/inc_gnb.html');
};
?>

위 코드 수정

<?php
//쿠키얻기
$getCookieLang = $_COOKIE["clickedlanguage"];

$thisURL = $_SERVER['REQUEST_URI'];

$thisLangKO = '_ko';
$thisLangEN = '_en';
$thisLangJP = '_jp';


if(strpos($thisURL, '_en') == true) {
    $getCookieLang = 'en';
} else if(strpos($thisURL, '_jp') == true) {
    $getCookieLang = "jp";
} else {
    $getCookieLang = "ko";
}

$arr = array("ko", "jp", "en");

//헤더
if(in_array($getCookieLang, $arr)) {
    include($_SERVER['DOCUMENT_ROOT'].'/'.$getCookieLang.'/inc/inc_head.html');
    include($_SERVER['DOCUMENT_ROOT'].'/'.$getCookieLang.'/inc/inc_gnb.php');
}

//푸터
if(in_array($getCookieLang, $arr)) {
    include($_SERVER['DOCUMENT_ROOT'].'/'.$getCookieLang.'/inc/inc_footer.php');
    include($_SERVER['DOCUMENT_ROOT'].'/'.$getCookieLang.'/inc/inc_end.php');
}

?>
728x90