func (i18n *I18n) T(locale, key string, args ...interface{}) string { var value = i18n.value var translationKey = key if i18n.scope != "" { translationKey = strings.Join([]string{i18n.scope, key}, ".") } if translations := i18n.Translations[locale]; translations != nil && translations[translationKey] != nil && translations[translationKey].Value != "" { // Get localized translation value = translations[translationKey].Value } else if translations := i18n.Translations[Default]; translations != nil && translations[translationKey] != nil { // Get default translation if not translated value = translations[translationKey].Value } else { if value == "" { value = key } // Save translations i18n.SaveTranslation(&Translation{Key: translationKey, Value: value, Locale: Default, Backend: i18n.Backends[0]}) } if value == "" { value = key } if str, err := cldr.Parse(locale, value, args...); err == nil { return str } return value }
func (context *Context) dt(key string, value string, values ...interface{}) string { locale := utils.GetLocale(context.Context) if context.Admin.I18n == nil { if result, err := cldr.Parse(locale, value, values...); err == nil { return result } return key } else { return context.Admin.I18n.Scope("qor_admin").Default(value).T(locale, key, values...) } }
func (admin *Admin) T(context *qor.Context, key string, value string, values ...interface{}) template.HTML { locale := utils.GetLocale(context) if admin.I18n == nil { if result, err := cldr.Parse(locale, value, values...); err == nil { return template.HTML(result) } return template.HTML(key) } else { return admin.I18n.Scope("qor_admin").Default(value).T(locale, key, values...) } }
func (i18n *I18n) T(locale, key string, args ...interface{}) template.HTML { var value = i18n.value var translationKey = key if i18n.scope != "" { translationKey = strings.Join([]string{i18n.scope, key}, ".") } if translations := i18n.Translations[locale]; translations != nil && translations[translationKey] != nil && translations[translationKey].Value != "" { // Get localized translation value = translations[translationKey].Value } else if translations := i18n.Translations[Default]; translations != nil && translations[translationKey] != nil { // Get default translation if not translated value = translations[translationKey].Value } else { if value == "" { value = key } // Save translations i18n.SaveTranslation(&Translation{Key: translationKey, Value: value, Locale: Default, Backend: i18n.Backends[0]}) } if value == "" { value = key } if str, err := cldr.Parse(locale, value, args...); err == nil { value = str } if i18n.IsInlineEdit { var editType string if len(value) > 25 { editType = "data-type=\"textarea\"" } value = fmt.Sprintf("<span class=\"qor-i18n-inline\" %s data-locale=\"%s\" data-key=\"%s\">%s</span>", editType, locale, key, value) } return template.HTML(value) }
// T translate with locale, key and arguments func (i18n *I18n) T(locale, key string, args ...interface{}) template.HTML { var ( value = i18n.value translationKey = key ) if locale == "" { locale = Default } if i18n.scope != "" { translationKey = strings.Join([]string{i18n.scope, key}, ".") } var translation Translation if err := i18n.CacheStore.Unmarshal(cacheKey(locale, key), &translation); err != nil || translation.Value == "" { // Get default translation if not translated if err := i18n.CacheStore.Unmarshal(cacheKey(Default, key), &translation); err != nil || translation.Value == "" { // If not initialized translation = Translation{Key: translationKey, Value: value, Locale: locale, Backend: i18n.Backends[0]} // Save translation i18n.SaveTranslation(&translation) } } if translation.Value != "" { value = translation.Value } if str, err := cldr.Parse(locale, value, args...); err == nil { value = str } return template.HTML(value) }