go/svc/invoice: add shitty multilanguage support
diff --git a/go/svc/invoice/render.go b/go/svc/invoice/render.go
index 68e3472..03dcd77 100644
--- a/go/svc/invoice/render.go
+++ b/go/svc/invoice/render.go
@@ -13,18 +13,25 @@
)
var (
- invTmpl *template.Template
+ invTmpl map[string]*template.Template
+
+ languages = []string{"en", "pl"}
+ defaultLanguage = "en"
)
func init() {
- a, err := templates.Asset("invoice.html")
- if err != nil {
- panic(err)
+ invTmpl = make(map[string]*template.Template)
+ for _, language := range languages {
+ filename := fmt.Sprintf("invoice_%s.html", language)
+ a, err := templates.Asset(filename)
+ if err != nil {
+ panic(err)
+ }
+ invTmpl[language] = template.Must(template.New(filename).Parse(string(a)))
}
- invTmpl = template.Must(template.New("invoice.html").Parse(string(a)))
}
-func renderInvoicePDF(i *pb.Invoice) ([]byte, error) {
+func renderInvoicePDF(i *pb.Invoice, language string) ([]byte, error) {
type item struct {
Title string
UnitPrice string
@@ -95,8 +102,12 @@
data.Total = fmt.Sprintf(unit+"%.2f", float64(i.Total)/100)
data.DeliveryCharge = fmt.Sprintf(unit+"%.2f", float64(0))
+ if _, ok := invTmpl[language]; !ok {
+ language = defaultLanguage
+ }
+
var b bytes.Buffer
- err := invTmpl.Execute(&b, &data)
+ err := invTmpl[language].Execute(&b, &data)
if err != nil {
return []byte{}, err
}