Add configurable locale reloading (via options)
This commit is contained in:
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Generated
+1
@@ -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"`
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Generated
+2
-3
@@ -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 (
|
||||
|
||||
Reference in New Issue
Block a user