다국어 세팅을 시작했습니다. 지난 번 질문에 대한 답변을 통해 많은 부분 의뢰없이 직접 수정할 수 있게 되었습니다.
오늘의 질문입니다.
html 에서는 예를들어, {$lang->card_list_hide} 이렇게 입력하면 잘 적용되는데
js 화일에서는 적용이되지 않습니다.
if(content.is(':visible')){
content.hide();
jQuery(obj).html('보이기');
}else{
content.show();
jQuery(obj).html('감추기');
}
이런 구문인데
보이기 를 {$lang->card_list_hide} 로 대치하면 문자열 그대로 출력해버립니다. 어떻게 해결하는 것이 가장 좋을까요?
js 파일에서는 어떤 템플릿 문법도 변환되지 않습니다.
그래서 html 파일에 자바스크립트까지 다 입력해 놓고 지저분하게 운영하시는 분들이 있는데,
정석대로라면 html 파일에서는 템플릿 문법을 활용하여 변수만 선언하고
<script> var card_list_hide = {$lang->card_list_hide|json}; </script>
js 파일에서 이 변수를 사용하는 것이 좋습니다.
jQuery(obj).html(card_list_hide);
{$변수|json} 문법은 JS에서 문제를 일으킬 수 있는 특수문자를 자동으로 인코딩하고 앞뒤에 따옴표까지 자동으로 붙여 줍니다. 따라서 앞뒤에 따옴표를 붙이거나 별도로 escape할 필요가 없습니다. 심지어 여러 개의 데이터를 배열에 담아 한꺼번에 선언할 수도 있으므로, 이런 상황에서 사용하기 딱 좋습니다.