diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/config.go | 3 | ||||
-rw-r--r-- | utils/i18n.go | 99 |
2 files changed, 22 insertions, 80 deletions
diff --git a/utils/config.go b/utils/config.go index 12d03b5de..c2ae1f7a0 100644 --- a/utils/config.go +++ b/utils/config.go @@ -223,5 +223,8 @@ func getClientConfig(c *model.Config) map[string]string { props["EnableLdap"] = strconv.FormatBool(*c.LdapSettings.Enable) + props["WebsocketPort"] = fmt.Sprintf("%v", *c.ServiceSettings.WebsocketPort) + props["WebsocketSecurePort"] = fmt.Sprintf("%v", *c.ServiceSettings.WebsocketSecurePort) + return props } 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 } |