summaryrefslogtreecommitdiffstats
path: root/utils/i18n.go
diff options
context:
space:
mode:
author=Corey Hulen <corey@hulen.com>2016-01-28 11:59:38 -0500
committer=Corey Hulen <corey@hulen.com>2016-01-28 11:59:38 -0500
commite37b2c62f3148ec26f9eddd57d208a640715e68e (patch)
tree27e9484181d1b20ef4e78513f66866d4b82ec900 /utils/i18n.go
parent2138b46f6cdab5fca49680c2e1994703ab71b1c3 (diff)
parentdb37897538f134b29784453797510c20e1e9303c (diff)
downloadchat-e37b2c62f3148ec26f9eddd57d208a640715e68e.tar.gz
chat-e37b2c62f3148ec26f9eddd57d208a640715e68e.tar.bz2
chat-e37b2c62f3148ec26f9eddd57d208a640715e68e.zip
Merge branch 'master' into PLT-1765
Diffstat (limited to 'utils/i18n.go')
-rw-r--r--utils/i18n.go22
1 files changed, 17 insertions, 5 deletions
diff --git a/utils/i18n.go b/utils/i18n.go
index 05154bd92..e809ae883 100644
--- a/utils/i18n.go
+++ b/utils/i18n.go
@@ -44,7 +44,7 @@ func GetTranslationsBySystemLocale() i18n.TranslateFunc {
panic("Failed to load system translations for '" + model.DEFAULT_LOCALE + "'")
}
- translations, _ := i18n.Tfunc(locale)
+ translations := TfuncWithFallback(locale)
if translations == nil {
panic("Failed to load system translations")
}
@@ -58,22 +58,34 @@ func GetUserTranslations(locale string) i18n.TranslateFunc {
locale = model.DEFAULT_LOCALE
}
- translations, _ := i18n.Tfunc(locale)
+ translations := TfuncWithFallback(locale)
return translations
}
func SetTranslations(locale string) i18n.TranslateFunc {
- translations, _ := i18n.Tfunc(locale)
+ translations := TfuncWithFallback(locale)
return translations
}
func GetTranslationsAndLocale(w http.ResponseWriter, r *http.Request) (i18n.TranslateFunc, string) {
headerLocale := strings.Split(strings.Split(r.Header.Get("Accept-Language"), ",")[0], "-")[0]
if locales[headerLocale] != "" {
- translations, _ := i18n.Tfunc(headerLocale)
+ translations := TfuncWithFallback(headerLocale)
return translations, headerLocale
}
- translations, _ := i18n.Tfunc(model.DEFAULT_LOCALE)
+ translations := TfuncWithFallback(model.DEFAULT_LOCALE)
return translations, model.DEFAULT_LOCALE
}
+
+func TfuncWithFallback(pref string) i18n.TranslateFunc {
+ t, _ := i18n.Tfunc(pref)
+ return func(translationID string, args ...interface{}) string {
+ if translated := t(translationID, args...); translated != translationID {
+ return translated
+ }
+
+ t, _ := i18n.Tfunc("en")
+ return t(translationID, args...)
+ }
+}