2017-12-25 22 views
1

HTMLService를 사용하여 HTML 템플릿을 만들고 템플릿 콘텐츠를 번역 한 다음 변수를 템플릿에 게시 한 다음 콘텐츠가 포함 된 이메일을 보내려합니다.HTML 템플릿 만들기> 번역> 변수를 템플릿에 게시하기 (Google Apps Script)

변수가 템플릿이 번역 된 후에 게시되는 것이 중요합니다 (변수는 사용자가 제공 한 내용이므로 번역 할 필요가 없습니다).

템플릿을 번역 한 후에 변수를 추가하는 데 어려움을 겪고 있습니다.

HTML 템플릿 (test.html를)

<table><tr><td> 
Text (in english) which needs to be translated.<br><br> 
<?=variable?> 
</td></tr></table> 

가스 코드가 완전히 뷰를 건물에서 비즈니스 로직 계층 (텍스트 + 번역)을 분리하는 것이 좋습니다

var template = HtmlService.createTemplateFromFile('test').getRawContent(); 
var translatedmessage = LanguageApp.translate(template, 'en', 'es', {contentType: 'html'}); 
translatedmessage.variable = "service"; 

// I have a number of variables and do not want them translated. 

MailApp.sendEmail({ 
    to: 'email address', 
    subject: 'This subject', 
    htmlBody: translatedmessage 
}) 

답변

1

(텍스트를 템플릿으로 푸시하고 변수 추가). .gs 코드에서 텍스트를 전역 변수 또는 개체 속성으로 선언하십시오.

var data = { text: “your text }; 

다음, 텍스트 변환 기능 정의 다음 번역 기능과 다른 변수, 예를 들어,에 의해 반환 된 텍스트를 집에 컨테이너를 추가, 템플릿에서

function translate (text) { 

    return LanguageApp.translate(text, sourceLang, targetLang); 

    } 

<div><?!= translation ></div> 
<div><?!= variable ></div> 

마지막으로 파일에서 템플릿을 만들고 변수를 설정 한 다음 evaluate() 메소드를 실행하여 HtmlOutput으로 변환하십시오.

var template = HtmlService.createTemplateFromFile('test'); 
var translatedmessage = translate(data.text); 
template.translation = translatedmessage; 
template.variable = "service"; 

MailApp.sendEmail({ 
    to: 'email address', 
    subject: 'This subject', 
    htmlBody: template.evaluate().getContent() 
}) 
+0

감사합니다. Anton. 콘텐츠를 개별적으로 번역하는 대신 전체 HTML 템플릿을 먼저 번역하면 더 쉬운 방법이되기를 바랍니다. 그러나 이것은 다른 프로젝트를 설정하고 여전히 작동하는 방식 인 것이 좋습니다. – Johnny

+0

나는 그것이 더 쉬울 것이라고 생각하지 않는다. 예를 들어 변수가 HtmlTemplate 유형이 아닌 String 유형이므로 JavaScript에서이 번역 된 행인 message.variable = "service"가 작동하지 않습니다. HtmlService.getRawContent()의 반환 유형은 '문자열'입니다. 템플릿에 대해이 메소드를 실행하면 더 이상 스크립트 릿의 변수를 설정할 수 없습니다.

+0

템플릿을 번역하려는 이유는 이미 구현했기 때문입니다. 콘텐츠가 많은 템플릿을 사용하므로 모든 콘텐츠를 개별 변수로 추출한 다음 변수를 변환하는 대신 나중에 템플릿을 번역 한 다음 나중에 사용자 별 변수를 추가하는 것이 더 쉬울 것이라고 생각했습니다. 그게 말이 되니? 그럼에도 불구하고 템플릿을 컨테이너/변수로 변환하여 번역해야하는 변수 만 번역 할 수 있습니다. Anton에게 도움을 주셔서 대단히 감사합니다. – Johnny