Add configurable locale reloading (via options)

This commit is contained in:
Denis Arh
2021-08-25 17:07:14 +02:00
parent 04d274fb70
commit 62c1571bdc
8 changed files with 27 additions and 28 deletions
-7
View File
@@ -154,13 +154,6 @@ func (h *AuthHandlers) handle(fn handlerFn) http.HandlerFunc {
zap.String("method", r.Method),
)
if h.Opt.DevelopmentMode {
if err := loc.Reload(); err != nil {
// when in development mode, refresh languages for every request
h.Log.Error("failed to load locales", zap.Error(err))
}
}
err := func() (err error) {
if err = r.ParseForm(); err != nil {
return
+2 -3
View File
@@ -11,13 +11,12 @@ package service
import (
"context"
"fmt"
"strings"
"time"
"github.com/cortezaproject/corteza-server/automation/types"
"github.com/cortezaproject/corteza-server/pkg/actionlog"
"github.com/cortezaproject/corteza-server/pkg/errors"
"github.com/cortezaproject/corteza-server/pkg/locale"
"strings"
"time"
)
type (
+16 -7
View File
@@ -12,13 +12,20 @@ const AcceptLanguageHeader = "Accept-Language"
func DetectLanguage(ll *Languages) func(next http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if ll.opt.DevelopmentMode {
if err := ll.Reload(); err != nil {
// when in development mode, refresh languages for every request
ll.log.Error("failed to load locales", zap.Error(err))
}
}
var (
rawLanguageTag string
)
// try to detect the language from the request's query string:
if ll.Options().QueryStringParam != "" {
rawLanguageTag = r.URL.Query().Get(ll.Options().QueryStringParam)
if ll.opt.QueryStringParam != "" {
rawLanguageTag = r.URL.Query().Get(ll.opt.QueryStringParam)
}
// try to detect the language from the request's headers:
@@ -56,11 +63,13 @@ func DetectLanguage(ll *Languages) func(next http.Handler) http.Handler {
// new request with new context
r = r.WithContext(SetLanguageToContext(r.Context(), preferred))
ll.log.Debug(
"language detected",
zap.String("preferred", preferred.String()),
zap.String("raw", rawLanguageTag),
)
if ll.opt.DevelopmentMode {
ll.log.Debug(
"language detected",
zap.String("preferred", preferred.String()),
zap.String("raw", rawLanguageTag),
)
}
}
next.ServeHTTP(w, r)
-4
View File
@@ -72,10 +72,6 @@ func (set *Languages) Default() language.Tag {
return set.def
}
func (set *Languages) Options() options.LocaleOpt {
return set.opt
}
func (set *Languages) Tags() (tt []language.Tag) {
tt = make([]language.Tag, 0, len(set.ll))
for t := range set.ll {
+1
View File
@@ -13,6 +13,7 @@ type (
Path string `env:"LOCALE_PATH"`
QueryStringParam string `env:"LOCALE_QUERY_STRING_PARAM"`
Log bool `env:"LOCALE_LOG"`
DevelopmentMode bool `env:"LOCALE_DEVELOPMENT_MODE"`
}
)
+6
View File
@@ -12,3 +12,9 @@ props:
- name: log
type: bool
description: Log locale related events and actions
- name: developmentMode
type: bool
description: |-
When enabled, Corteza reloads language files on every request
Enable this for debugging or developing
-4
View File
@@ -27,8 +27,6 @@ func (Locale) New() *Locale {
}
func (ctrl Locale) List(ctx context.Context, r *request.LocaleList) (interface{}, error) {
locale.Global().Reload() // @todo debug only; remove later
var (
rval = make([]*localeResponse, 0, 16)
currentLang = locale.GetLanguageFromContext(ctx)
@@ -46,8 +44,6 @@ func (ctrl Locale) List(ctx context.Context, r *request.LocaleList) (interface{}
}
func (ctrl Locale) Get(ctx context.Context, r *request.LocaleGet) (interface{}, error) {
locale.Global().Reload() // @todo debug only; remove later
return func(w http.ResponseWriter, req *http.Request) {
w.Header().Set("Content-Type", "application/json;charset=UTF-8")
err := locale.Global().EncodeExternal(w, language.Make(r.Lang), r.Application)
+2 -3
View File
@@ -11,13 +11,12 @@ package service
import (
"context"
"fmt"
"strings"
"time"
"github.com/cortezaproject/corteza-server/pkg/actionlog"
"github.com/cortezaproject/corteza-server/pkg/errors"
"github.com/cortezaproject/corteza-server/pkg/locale"
"github.com/cortezaproject/corteza-server/system/types"
"strings"
"time"
)
type (