다국어 기능 js 설정
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.3 |
다국어 세팅을 시작했습니다. 지난 번 질문에 대한 답변을 통해 많은 부분 의뢰없이 직접 수정할 수 있게 되었습니다.
오늘의 질문입니다.
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} 로 대치하면 문자열 그대로 출력해버립니다. 어떻게 해결하는 것이 가장 좋을까요?
스코스코
Lv. 5
댓글 6
js 파일에서는 어떤 템플릿 문법도 변환되지 않습니다.
그래서 html 파일에 자바스크립트까지 다 입력해 놓고 지저분하게 운영하시는 분들이 있는데,
정석대로라면 html 파일에서는 템플릿 문법을 활용하여 변수만 선언하고
<script> var card_list_hide = {$lang->card_list_hide|json}; </script>
js 파일에서 이 변수를 사용하는 것이 좋습니다.
jQuery(obj).html(card_list_hide);
{$변수|json} 문법은 JS에서 문제를 일으킬 수 있는 특수문자를 자동으로 인코딩하고 앞뒤에 따옴표까지 자동으로 붙여 줍니다. 따라서 앞뒤에 따옴표를 붙이거나 별도로 escape할 필요가 없습니다. 심지어 여러 개의 데이터를 배열에 담아 한꺼번에 선언할 수도 있으므로, 이런 상황에서 사용하기 딱 좋습니다.
그 밖에도 다양한 필터가 있으니 필요에 따라 활용하시면 편리합니다.
https://github.com/rhymix/rhymix/pull/727
js 파일은 템플릿과 전혀 상관 없는 곳이라고 생각하면 편합니다..
불가피한 경우는 스크립트를 모두 html 템플릿에 포함하여 회피할 수 있지만
js 파일을 이용해야 하는 경우 사용고자 하는 값을 html에서 전역변수? 성격으로 선언한 다음 필요한 곳에서 사용하면 됩니다.
위 기진곰님께서 설명해주신 부분이
card_list_hide 라는 변수에 원하시는 값을 담는 스크립트만 간단하게 html 템플릿에서 작성하라고 말씀 해주신 부분입니다.
라이믹스 코어에서도 여러곳에서 쓸수 있도록 php 단에서 스크립트용 변수를 만들어주는 것을 예시로 보시면 됩니다.
<script>
var default_url = "https://xetown.com/";
var current_url = "https://xetown.com/";
var request_uri = "https://xetown.com/";
var current_lang = xe.current_lang = "ko";
var current_mid = "hall";
var http_port = null;
var https_port = null;
var enforce_ssl = true;
var cookies_ssl = true;
var rewrite_level = 2;
if (detectColorScheme) detectColorScheme();
</script>
이렇게 만들어 놓으면 어디에서든 가져다 쓸수 있습니다.