summaryrefslogtreecommitdiffstats
path: root/utils/i18n.go
diff options
context:
space:
mode:
Diffstat (limited to 'utils/i18n.go')
-rw-r--r--utils/i18n.go99
1 files changed, 19 insertions, 80 deletions
diff --git a/utils/i18n.go b/utils/i18n.go
index 4fc8c725a..05154bd92 100644
--- a/utils/i18n.go
+++ b/utils/i18n.go
@@ -12,10 +12,6 @@ import (
"github.com/nicksnyder/go-i18n/i18n"
)
-const (
- SESSION_LOCALE = "MMLOCALE"
-)
-
var T i18n.TranslateFunc
var locales map[string]string = make(map[string]string)
@@ -36,15 +32,16 @@ func InitTranslations() {
func GetTranslationsBySystemLocale() i18n.TranslateFunc {
locale := model.DEFAULT_LOCALE
if userLanguage, err := jibber_jabber.DetectLanguage(); err == nil {
- locale = userLanguage
+ if _, ok := locales[userLanguage]; ok {
+ locale = userLanguage
+ } else {
+ l4g.Error("Failed to load system translations for '%v' attempting to fall back to '%v'", locale, model.DEFAULT_LOCALE)
+ locale = model.DEFAULT_LOCALE
+ }
}
if locales[locale] == "" {
- l4g.Error("Failed to load system translations for '%v' attempting to fall back to '%v'", locale, model.DEFAULT_LOCALE)
-
- if locales[model.DEFAULT_LOCALE] == "" {
- panic("Failed to load system translations for '" + model.DEFAULT_LOCALE + "'")
- }
+ panic("Failed to load system translations for '" + model.DEFAULT_LOCALE + "'")
}
translations, _ := i18n.Tfunc(locale)
@@ -56,85 +53,27 @@ func GetTranslationsBySystemLocale() i18n.TranslateFunc {
return translations
}
-func SetTranslations(locale string) i18n.TranslateFunc {
+func GetUserTranslations(locale string) i18n.TranslateFunc {
+ if _, ok := locales[locale]; !ok {
+ locale = model.DEFAULT_LOCALE
+ }
+
translations, _ := i18n.Tfunc(locale)
return translations
}
-func GetTranslations(w http.ResponseWriter, r *http.Request) i18n.TranslateFunc {
- translations, _ := getTranslationsAndLocale(w, r)
+func SetTranslations(locale string) i18n.TranslateFunc {
+ translations, _ := i18n.Tfunc(locale)
return translations
}
func GetTranslationsAndLocale(w http.ResponseWriter, r *http.Request) (i18n.TranslateFunc, string) {
- return getTranslationsAndLocale(w, r)
-}
-
-func SetLocaleCookie(w http.ResponseWriter, lang string, sessionCacheInMinutes int) {
- maxAge := (sessionCacheInMinutes * 60)
- cookie := &http.Cookie{
- Name: SESSION_LOCALE,
- Value: lang,
- Path: "/",
- MaxAge: maxAge,
- }
-
- http.SetCookie(w, cookie)
-}
-
-// var keyRegexp = regexp.MustCompile(`:[[:word:]]+`)
-// func MaybeExpandNamedText(text string, args ...interface{}) string {
-// var (
-// arg = args[0]
-// argval = reflect.ValueOf(arg)
-// )
-// if argval.Kind() == reflect.Ptr {
-// argval = argval.Elem()
-// }
-
-// if argval.Kind() == reflect.Map && argval.Type().Key().Kind() == reflect.String {
-// return expandNamedText(text, func(key string) reflect.Value {
-// return argval.MapIndex(reflect.ValueOf(key))
-// })
-// }
-// if argval.Kind() != reflect.Struct {
-// return text
-// }
-
-// return expandNamedText(text, argval.FieldByName)
-// }
-
-// func expandNamedText(text string, keyGetter func(key string) reflect.Value) string {
-// return keyRegexp.ReplaceAllStringFunc(text, func(key string) string {
-// val := keyGetter(key[1:])
-// if !val.IsValid() {
-// return key
-// }
-// newVar, _ := val.Interface().(string)
-// return newVar
-// })
-// }
-
-func getTranslationsAndLocale(w http.ResponseWriter, r *http.Request) (i18n.TranslateFunc, string) {
- var translations i18n.TranslateFunc
- var _ error
- localeCookie := ""
- if cookie, err := r.Cookie(SESSION_LOCALE); err == nil {
- localeCookie = cookie.Value
- if locales[localeCookie] != "" {
- translations, _ = i18n.Tfunc(localeCookie)
- return translations, localeCookie
- }
- }
-
- localeCookie = strings.Split(strings.Split(r.Header.Get("Accept-Language"), ",")[0], "-")[0]
- if locales[localeCookie] != "" {
- translations, _ = i18n.Tfunc(localeCookie)
- SetLocaleCookie(w, localeCookie, 10)
- return translations, localeCookie
+ headerLocale := strings.Split(strings.Split(r.Header.Get("Accept-Language"), ",")[0], "-")[0]
+ if locales[headerLocale] != "" {
+ translations, _ := i18n.Tfunc(headerLocale)
+ return translations, headerLocale
}
- translations, _ = i18n.Tfunc(model.DEFAULT_LOCALE)
- SetLocaleCookie(w, model.DEFAULT_LOCALE, 10)
+ translations, _ := i18n.Tfunc(model.DEFAULT_LOCALE)
return translations, model.DEFAULT_LOCALE
}