diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2017-09-05 17:39:45 -0400 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2017-09-05 17:39:45 -0400 |
commit | 6ca443a2556e5d4bade9a9ef7d6d877bf1d6fc45 (patch) | |
tree | 0feef921917b85f359f3ce2e44aacd6d61700d4d /utils/html.go | |
parent | 016b5daa1cde1a147701aafce94f67057fbb7aa6 (diff) | |
download | chat-6ca443a2556e5d4bade9a9ef7d6d877bf1d6fc45.tar.gz chat-6ca443a2556e5d4bade9a9ef7d6d877bf1d6fc45.tar.bz2 chat-6ca443a2556e5d4bade9a9ef7d6d877bf1d6fc45.zip |
PLT-7522 Cleaned up translation of templates (#7351)
* PLT-7522 Cleaned up translation of templates
* Added unit tests
* Changed TranslateAsHtml to not be variadic
Diffstat (limited to 'utils/html.go')
-rw-r--r-- | utils/html.go | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/utils/html.go b/utils/html.go index e6050f62a..dfbbe832d 100644 --- a/utils/html.go +++ b/utils/html.go @@ -93,8 +93,8 @@ func (t *HTMLTemplate) addDefaultProps() { t.Props["Organization"] = "" } - t.Html["EmailInfo"] = template.HTML(localT("api.templates.email_info", - map[string]interface{}{"SupportEmail": Cfg.SupportSettings.SupportEmail, "SiteName": Cfg.TeamSettings.SiteName})) + t.Html["EmailInfo"] = TranslateAsHtml(localT, "api.templates.email_info", + map[string]interface{}{"SupportEmail": Cfg.SupportSettings.SupportEmail, "SiteName": Cfg.TeamSettings.SiteName}) } func (t *HTMLTemplate) Render() string { @@ -116,5 +116,26 @@ func (t *HTMLTemplate) RenderToWriter(w http.ResponseWriter) error { l4g.Error(T("api.api.render.error"), t.TemplateName, err) return err } + return nil } + +func TranslateAsHtml(t i18n.TranslateFunc, translationID string, args map[string]interface{}) template.HTML { + return template.HTML(t(translationID, escapeForHtml(args))) +} + +func escapeForHtml(arg interface{}) interface{} { + switch typedArg := arg.(type) { + case string: + return template.HTMLEscapeString(typedArg) + case map[string]interface{}: + safeArg := make(map[string]interface{}, len(typedArg)) + for key, value := range typedArg { + safeArg[key] = escapeForHtml(value) + } + return safeArg + default: + l4g.Warn("Unable to escape value for HTML template %v", arg) + return "" + } +} |