Extra Form
PHP PHP 5.6
CMS XpressEngine

안녕하세요. 어제 다국어 지원 관련 글을 썼는데, 애드온은 아무리 해도 방법이 나오질 않아서 수동으로 다국어 자동 언어 선택을 지원하려합니다.

 

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창은 출력이 되거든요.

  • profile
    XE를 사용하신다고 하셨는데,
    https://xe1.xpressengine.com/index.php?mid=download&package_id=22753640

    위 애드온이 원하시는 기능을 하는 것 같은데 이 애드온이 무엇이 문제인지 저는 잘 모르겠네요. 과거 다국어를 사이트에 적용했을때 위 애드온을 사용해서 이상이 없이 작동했습니다.
  • profile ?
    동작이 안되어서요. 저거 말고 다른 애드온 두 개도 모두 테스트해봤는데 어째서인지 작동이 안되더라고요. 이유야 저는 모르고 결론적으로 애드온이 작동을 하지 않았습니다.

    xe.current_lang 변수를 누가 알려주셔서 이걸 이용해보기로 했습니다. 감사합니다.
  • ?

    ======= 해결했습니다 =======
    xe.current_lang 호출을 레이아웃 Head부분에다가 넣으니 선언이 호출보다 늦어버려서.. 그냥 Footer스크립트로 넣었습니다. doChangeLangType 함수도 은근 마음에 안들게 동작해서 그냥 주소 뒤에 ?l=ko 붙여서 리다이렉트 시켜버렸습니다.
    여러가지 꼼수와 권모술수가 난무하는 방법으로 해결봤습니다만 너무 만족스럽구 도움주신 모든 분들 감사드립니다... 특히 xe.current_lang 이거를 몰랐는데 정말 감사합니다. 그리고 언어 자동 선택 애드온.. 여러 브라우저로 테스트해봐도 작동이 안됩니다 ㅠㅠ 제가 잘 못 테스트 하는거일 가능성이 제일 높겠네요. "아무튼 안돼 아몰랑"식으로 말씀드려서 죄송하지만, 저는 제 나름대로 보이는 현상을 말씀드린게 "작동이 안된다"였었어서요.. ㅠㅠ 넓은 아량으로 모두 이해 부탁드리겠습니다.
    도움 주신 모든 분들 감사합니다.