summaryrefslogtreecommitdiffstats
path: root/i18n
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-11-04 09:43:35 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-11-04 10:48:29 +0100
commitc97216e4f0f3021b12cd3803e512393be569c886 (patch)
tree5ca01ac3c5ba53f8dde249a6494fcb55fccdde02 /i18n
parentbb04010cbfd92837685f98c3e0f5362ba00ce487 (diff)
i18n: Prevent data race in lang code handling
See #3564
Diffstat (limited to 'i18n')
-rw-r--r--i18n/i18n.go2
-rw-r--r--i18n/translationProvider.go2
2 files changed, 3 insertions, 1 deletions
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.