You've already forked golang-saas-starter-kit
mirror of
https://github.com/raseels-repos/golang-saas-starter-kit.git
synced 2025-08-08 22:36:41 +02:00
web-app: use universal-translator files to externalize translatable texts
This commit is contained in:
@ -17,6 +17,7 @@ import (
|
|||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/weberror"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/weberror"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace"
|
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace"
|
||||||
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/ext"
|
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/ext"
|
||||||
@ -372,6 +373,8 @@ func (r *TemplateRenderer) Render(ctx context.Context, w http.ResponseWriter, re
|
|||||||
data["error"] = terr
|
data["error"] = terr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data["trans"] = webcontext.ContextTranslator(ctx)
|
||||||
|
|
||||||
// Append request data map to render data last so any previous value can be overwritten.
|
// Append request data map to render data last so any previous value can be overwritten.
|
||||||
if data != nil {
|
if data != nil {
|
||||||
for k, v := range data {
|
for k, v := range data {
|
||||||
|
@ -2,6 +2,7 @@ package webcontext
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"log"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -63,6 +64,16 @@ func init() {
|
|||||||
// Provide one or more arguments for additional supported locales.
|
// Provide one or more arguments for additional supported locales.
|
||||||
uniTrans = ut.New(en, en, fr, id, ja, nl, zh)
|
uniTrans = ut.New(en, en, fr, id, ja, nl, zh)
|
||||||
|
|
||||||
|
err := uniTrans.Import(ut.FormatJSON, "templates/content/translations")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = uniTrans.VerifyTranslations()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
// this is usually know or extracted from http 'Accept-Language' header
|
// this is usually know or extracted from http 'Accept-Language' header
|
||||||
// also see uni.FindTranslator(...)
|
// also see uni.FindTranslator(...)
|
||||||
transEn, _ := uniTrans.GetTranslator(en.Locale())
|
transEn, _ := uniTrans.GetTranslator(en.Locale())
|
||||||
@ -72,15 +83,6 @@ func init() {
|
|||||||
transNl, _ := uniTrans.GetTranslator(nl.Locale())
|
transNl, _ := uniTrans.GetTranslator(nl.Locale())
|
||||||
transZh, _ := uniTrans.GetTranslator(zh.Locale())
|
transZh, _ := uniTrans.GetTranslator(zh.Locale())
|
||||||
|
|
||||||
transEn.Add("{{name}}", "Name", false)
|
|
||||||
transFr.Add("{{name}}", "Nom", false)
|
|
||||||
|
|
||||||
transEn.Add("{{first_name}}", "First Name", false)
|
|
||||||
transFr.Add("{{first_name}}", "Prénom", false)
|
|
||||||
|
|
||||||
transEn.Add("{{last_name}}", "Last Name", false)
|
|
||||||
transFr.Add("{{last_name}}", "Nom de famille", false)
|
|
||||||
|
|
||||||
validate = newValidator()
|
validate = newValidator()
|
||||||
|
|
||||||
en_translations.RegisterDefaultTranslations(validate, transEn)
|
en_translations.RegisterDefaultTranslations(validate, transEn)
|
||||||
@ -90,9 +92,8 @@ func init() {
|
|||||||
nl_translations.RegisterDefaultTranslations(validate, transNl)
|
nl_translations.RegisterDefaultTranslations(validate, transNl)
|
||||||
zh_translations.RegisterDefaultTranslations(validate, transZh)
|
zh_translations.RegisterDefaultTranslations(validate, transZh)
|
||||||
|
|
||||||
/*
|
|
||||||
validate.RegisterTranslation("unique", transEn, func(ut ut.Translator) error {
|
validate.RegisterTranslation("unique", transEn, func(ut ut.Translator) error {
|
||||||
return ut.Add("unique", "{0} must be unique", true) // see universal-translator for details
|
return nil
|
||||||
}, func(ut ut.Translator, fe validator.FieldError) string {
|
}, func(ut ut.Translator, fe validator.FieldError) string {
|
||||||
t, _ := ut.T("unique", fe.Field())
|
t, _ := ut.T("unique", fe.Field())
|
||||||
|
|
||||||
@ -100,13 +101,13 @@ func init() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
validate.RegisterTranslation("unique", transFr, func(ut ut.Translator) error {
|
validate.RegisterTranslation("unique", transFr, func(ut ut.Translator) error {
|
||||||
return ut.Add("unique", "{0} must be unique", true) // see universal-translator for details
|
return nil
|
||||||
}, func(ut ut.Translator, fe validator.FieldError) string {
|
}, func(ut ut.Translator, fe validator.FieldError) string {
|
||||||
t, _ := ut.T("unique", fe.Field())
|
t, _ := ut.T("unique", fe.Field())
|
||||||
|
|
||||||
return t
|
return t
|
||||||
})
|
})
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ctxKeyTagUnique represents the type of unique value for the context key used by the validation function.
|
// ctxKeyTagUnique represents the type of unique value for the context key used by the validation function.
|
||||||
|
Reference in New Issue
Block a user