안녕하세요. 어제 다국어 지원 관련 글을 썼는데, 애드온은 아무리 해도 방법이 나오질 않아서 수동으로 다국어 자동 언어 선택을 지원하려합니다.
head부분에 다음과 같은 작업을 통해서 해보려고 해요.
1. 현재 브라우저의 언어 설정 가져오기
2. 현재 웹사이트의 언어 설정 가져오기
3. if (브라우저 언어 설정 == 한국어 && 웹사이트 언어 설정 == 영어)
4. 한국어로 웹사이트 언어 변경
그런데 가장 문제가 되는 부분은 '웹사이트 언어가 무엇인지 알아내는 방법'입니다.
브라우저 언어 설정은 javaScript를 통해 알아냈습니다. 문자열 파싱을 통해서 ko / en으로 정리도 했습니다.
그래서 3번 조건 문을 if(lang == 'ko' && 웹사이트언어 == 'en')까지는 채울 수 있습니다.
웹사이트 언어를 가져오는 방법을 찾아보았는데, 여러 방법이 있더군요.
다 PHP문이었지만요.. ㅠㅠ
첫번째...
<!--@if($lang_supported[$lang_type]!="English")-->
alert("사이트 언어는 영어");
이 방법입니다. <Script>부터 </Script>사이에 있습니다.
결과는.. 현재 언어 설정이 English든 en이든 Korea든 모두 참을 반환해서.. alret가 나와버립니다.
두번째...
{Context::getLangType()}를 사용하는 경우...
얘도 Script문에 넣었는데 역시 모두 참을 반환합니다.. 패스
세번째...
if ($lang_type == 'en')
alert("12");
역시 Script문입니다. 그리고 이건 항상 거짓을 반환해버립니다...
저는 처음에 JavaScript안에 PHP구문(혹은 XE의 간이 PHP 구문(?))을 넣었으니..
아 클라이언트 영역에 서버 구문을 넣어서.. 둘은 동시에 못쓰는구나 생각했습니다.
또 JavaScript는 <!--@ ~~ -->의 XE구문을 그냥 <!-- ~~ -->로 봐서 주석으로 처리하나.. 생각도 해보았습니다.
근데 검색을 해보니 이렇게 쓰는 분도 계신다고 하고.. 모르겠습니다...
제가 여쭙고싶은 것은, Javascript안에서 현재 페이지의 언어 설정을 알아오는 방법이 있는지입니다.
XE의 기본 다국어 기능을 이용하고 있습니다.
현재 XE코어 버전은 1.11.5이며 사이트 URL 제목 밑 정보에 기입했습니다. (지금 들어가시면 Alert팝업만 하나 뜰 뿐이긴 합니다.)
마지막 경우의 <Haed>부분에 넣은 스크립트 중 조건문 부분만 올려봅니다.
if (lang=="ko") { //한국어라면
alert("한국어");
if ($lang_type == 'en')
alert("사이트 언어는 영어");
}
=> 사이트 언어를 영어로 바꿔도 거짓만 반환 됩니다. 조건을 lang_type == 'ko'로 바꿔도 사이트 언어가 한국어여도 거짓이 반환 됩니다. lang변수가 ko인건 맞습니다. "한국어" alert창은 출력이 되거든요.
https://xe1.xpressengine.com/index.php?mid=download&package_id=22753640
위 애드온이 원하시는 기능을 하는 것 같은데 이 애드온이 무엇이 문제인지 저는 잘 모르겠네요. 과거 다국어를 사이트에 적용했을때 위 애드온을 사용해서 이상이 없이 작동했습니다.