개발 Q&A

제목 자바스크립트 알림 메세지 다국화
글쓴이 kaido 작성시각 2016/03/04 09:55:27
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 11917   RSS

안녕하세요~

 

다국어 사이트 제작에 대해서 요즘 고민이 깊습니다.

 

CI라인에서 돌아가는 것은 얼추 맞춰주겠는데...

 

자바스크립트에서 나오는 js 파일 내에서의 얼럿메세지가 문제입니다.

 

저는 가급적 동일한 js 파일을 사용해도 다국어에 맞게 메세지를 보내주고 싶습니다만...

 

이거다! 하는 방법이 안떠오르네요.

 

생각한 방법중에는...

1. ajax를 사용해서 메세지를 로드

단점 . ajax를 쓴다는 점에서 패스. 

 

2.  헬퍼로 스크립트 상수를 셋팅해주기

function lang($location) {
	$CI =& get_instance();	
       $CI->lang->load('common', $location);
      echo "<script> ";
	echo "\n";
	foreach ($CI->lang->language  as $key => $value) {
		//echo $key ."-". $value;
		
		echo 'var '.strtoupper($key).' = "'.$value.'";';
		echo "\n";
		
		
		
	}
	echo "</script>";
}

단점. 스크립트로 상수 선언한 부분이 전부 노출됨.

 

3. 아직 해결 못한 과제인데...

js 파일을 php 파일로 바꾸고 

<script src='lang.php'></script>

이렇게 로드 한다음에  lang.php 파일 안에서 헬퍼처럼 로드한다음에 definde 를 걸어서 사용함.

[lang.php에서 ci 문구 사용이 안되서 현재 보류 상태]

 

 

뭔가 더 좋은 방법이나, 라이브러리 없을까요?

 

 다음글 메일 관련 또 질문 힙니다. (2)
 이전글 Rss 리더를 만들려고 하는데요 라이브러리 추천부탁드립... (3)

댓글

변종원(웅파) / 2016/03/04 10:24:19 / 추천 0

언어파일이 꼭 1벌이어야 하는게 아니면 따로 가시고 ci방식처럼 include 하시는게 방식상으로는 제일 심플합니다.

1벌이어야 하면 2번 방식 추천이구요. 상수 노출되어봐야 문자열이고 3번 방식으로 해도 어차피 노출되는건 똑같습니다.

배강민 / 2016/03/04 12:57:16 / 추천 0

TapBBS는 2번 방식을 이용합니다. 저도 이래저래 고민하다가 이렇게 했습니다.

    public function lang_js()
    {
        $data['lang'] = $this->lang->language;

        header('Content-Type: text/javascript; charset=UTF-8;');

        $result = array('var lang = [];');
        foreach ($data['lang'] as $k => $v)
        {
            $result[] = "lang['{$k}'] = \"".addslashes($v)."\";";
        }
        echo implode("\n", $result);
    }

 

kaido / 2016/03/04 15:34:16 / 추천 0
음... 다들 생각하는것은 비슷하다는 이야기군요. 조언 감사합니다. 2번 방식으로 진행 해야겠네요.