feat: translate error messages (#254)

* feat: translate error messages in error interceptor

* fix: add statik import

* feat: user error msgs

* feat: add translations

* feat: add translations

* feat: add translations

* feat: add translations

* feat: add translations

* feat: add translations

* some fixes and improved error messages

Co-authored-by: Livio Amstutz <livio.a@gmail.com>
This commit is contained in:
Fabi
2020-06-22 13:51:44 +02:00
committed by GitHub
parent f68a5e63b5
commit 6556d053b2
52 changed files with 570 additions and 389 deletions

View File

@@ -1,7 +1,9 @@
package i18n
import (
"context"
"encoding/json"
"github.com/grpc-ecosystem/go-grpc-middleware/util/metautils"
"io/ioutil"
"net/http"
"os"
@@ -89,6 +91,18 @@ func (t *Translator) LocalizeFromRequest(r *http.Request, id string, args map[st
return s
}
func (t *Translator) LocalizeFromCtx(ctx context.Context, id string, args map[string]interface{}) string {
s, err := t.localizerFromCtx(ctx).Localize(&i18n.LocalizeConfig{
MessageID: id,
TemplateData: args,
})
if err != nil {
logging.Log("I18N-MsF5sx").WithError(err).Warnf("missing translation")
return id
}
return s
}
func (t *Translator) Localize(id string, args map[string]interface{}, langs ...string) string {
s, _ := t.localizer(langs...).Localize(&i18n.LocalizeConfig{
MessageID: id,
@@ -111,6 +125,10 @@ func (t *Translator) localizerFromRequest(r *http.Request) *i18n.Localizer {
return t.localizer(t.langsFromRequest(r)...)
}
func (t *Translator) localizerFromCtx(ctx context.Context) *i18n.Localizer {
return t.localizer(t.langsFromCtx(ctx)...)
}
func (t *Translator) localizer(langs ...string) *i18n.Localizer {
return i18n.NewLocalizer(t.bundle, langs...)
}
@@ -126,3 +144,15 @@ func (t *Translator) langsFromRequest(r *http.Request) []string {
}
return langs
}
func (t *Translator) langsFromCtx(ctx context.Context) []string {
langs := make([]string, 0)
if ctx != nil {
langs = append(langs, getAcceptLanguageHeader(ctx))
}
return langs
}
func getAcceptLanguageHeader(ctx context.Context) string {
return metautils.ExtractIncoming(ctx).Get("grpcgateway-accept-language")
}