1

JavaScript를 사용하여 애플리케이션의 UI를 작성하기 위해 Google Closure Template을 사용하고 있습니다. Look at this question 왜 Google Closure Template을 사용하고 있는지 자세히 설명합니다. 다국어 지원이 필요합니다. --locales 스위치가 있으며 프로젝트 herehere에 제공된 샘플을 살펴 보았습니다. README_FOR_EXAMPLES에 기입되어 그 파일Google Closure Templates는 별도의 리소스 파일이있는 단일 JavaScript 코드베이스 대신 각 언어에 대해 여러 개의 JavaScript 파일을 생성합니다.

+ simple_generated_en.js, features_generated_en.js,
simple_generated_x-zz.js, 그것은 단순한 에서 실행될 때 JS 파일 SoyToJsSrcCompiler 의해 생성 features_generated_x-zz.js .soy 및 features.soy (로케일은 공유 예제 디렉토리 'examples'의 번역 된 XLIFF 파일과 위의 컴파일 타임 전역 파일을 사용하여 'en'및 'x-zz'입니다). features.soy의 템플릿 중 일부는 simple.soy로 템플릿을 호출하기 때문에 simple.soy와 features.soy가 모두 필요합니다. 참고 : 이 이러한 파일을 생성하는 Ant 대상 (및 명령 줄 args)의 예는 최상위 'build.xml'내의 대상 'js-features-example'을 참조하십시오.

내가 예상 한 것은 템플릿 함수가 호출되기 전에 런타임에 제공된 옵션에 따라 적절한 로케일 파일에서 원하는 문자열을 사용하는 자바 스크립트 코드베이스를 하나만 생성한다는 것이 었습니다. 클로저 템플릿으로 가능합니까?

답변

1

필자가 볼 수있는 한, 사전 개체를 템플릿의 매개 변수로 사용할 수 있습니다.

/** 
* @param dict 
*/ 
{template .example} 
    <h1>{$dict.title}</h1> 
    <div>{$dict.content}</div> 
{/template} 

이 개체는 로캘 파일의 서버 측에서 생성 될 수 있으며 스크립트 태그를 통해 javascript로 전송됩니다.

그렇지 않으면 로켈에 따라 다른 컴파일 된 템플릿 파일을 클라이언트 측에로드 할 수 있습니다.

i18n possibility도 있지만 문제는별로 도움이되지 않습니다.

+0

사전 개체 관련 문서로 연결시켜 주시겠습니까? – IsmailS

+0

좋아, 알았어. Plain JavaScript Object가 수행합니다. 문제는 현재 HTML이'soy. $$ escapeHtml (opt_data.title) '을 사용하여 그것을 이스케이프하지만, 나를 위해 문자열에 HTML 비트가있을 수 있습니다. 그거 알아? – IsmailS

+0

알 권리! 나는 그것도 발견했다. 내 템플릿에'{$ dict.content | noAutoescape}'가 있으면'content'에 HTML을 전달할 수 있으며 이스케이프 처리되지 않습니다. 즉,'<'는'< '으로 변환되지 않습니다. – IsmailS

관련 문제