zitadel/internal/notification/templates/templateData.go
2023-08-11 08:16:30 +00:00

53 lines
2.1 KiB
Go

package templates
import (
"fmt"
"html"
"github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/i18n"
)
const (
DefaultFontFamily = "-apple-system, BlinkMacSystemFont, Segoe UI, Lato, Arial, Helvetica, sans-serif"
DefaultFontColor = "#22292f"
DefaultBackgroundColor = "#fafafa"
DefaultPrimaryColor = "#5282C1"
)
type TemplateData struct {
Title string
PreHeader string
Subject string
Greeting string
Text string
URL string
ButtonText string
PrimaryColor string
BackgroundColor string
FontColor string
LogoURL string
FontURL string
FontFaceFamily string
FontFamily string
IncludeFooter bool
FooterText string
}
func (data *TemplateData) Translate(translator *i18n.Translator, msgType string, args map[string]interface{}, langs ...string) {
data.Title = translator.Localize(fmt.Sprintf("%s.%s", msgType, domain.MessageTitle), args, langs...)
data.PreHeader = translator.Localize(fmt.Sprintf("%s.%s", msgType, domain.MessagePreHeader), args, langs...)
data.Subject = translator.Localize(fmt.Sprintf("%s.%s", msgType, domain.MessageSubject), args, langs...)
data.Greeting = translator.Localize(fmt.Sprintf("%s.%s", msgType, domain.MessageGreeting), args, langs...)
data.Text = html.UnescapeString(translator.Localize(fmt.Sprintf("%s.%s", msgType, domain.MessageText), args, langs...))
data.ButtonText = translator.Localize(fmt.Sprintf("%s.%s", msgType, domain.MessageButtonText), args, langs...)
// Footer text is neither included in i18n files nor defaults.yaml
footerText := fmt.Sprintf("%s.%s", msgType, domain.MessageFooterText)
data.FooterText = translator.Localize(footerText, args, langs...)
// translator returns the id of the string to be translated if no translation is found for that id
// we'll include the footer if we have a custom non-empty string and if the string doesn't include the
// id of the string that could not be translated example InitCode.Footer
data.IncludeFooter = len(data.FooterText) > 0 && data.FooterText != footerText
}