diff --git a/i18n/i18n.go b/i18n/i18n.go index 73417fb32..6cc3d0b33 100644 --- a/i18n/i18n.go +++ b/i18n/i18n.go @@ -68,7 +68,9 @@ func (t Translator) initFuncs(bndl *bundle.Bundle) { currentLang := lang t.translateFuncs[currentLang] = func(translationID string, args ...interface{}) string { + tpMu.RLock() tFunc, err := bndl.Tfunc(currentLang) + tpMu.RUnlock() if err != nil { jww.WARN.Printf("could not load translations for language %q (%s), will use default content language.\n", lang, err) } diff --git a/i18n/translationProvider.go b/i18n/translationProvider.go index 663a8dd5e..556ee7a92 100644 --- a/i18n/translationProvider.go +++ b/i18n/translationProvider.go @@ -25,7 +25,7 @@ import ( // Unfortunately this needs to be global, see // https://github.com/nicksnyder/go-i18n/issues/82 -var tpMu sync.Mutex +var tpMu sync.RWMutex // TranslationProvider provides translation handling, i.e. loading // of bundles etc.