func (b *Bundle) translate(lang *language.Language, translationID string, args ...interface{}) string { if lang == nil { return translationID } translations := b.translations[lang.Tag] if translations == nil { translations = b.fallbackTranslations[lang.Tag] if translations == nil { return translationID } } translation := translations[translationID] if translation == nil { return translationID } var data interface{} var count interface{} if argc := len(args); argc > 0 { if isNumber(args[0]) { count = args[0] if argc > 1 { data = args[1] } } else { data = args[0] } } if count != nil { if data == nil { data = map[string]interface{}{"Count": count} } else { dataMap := toMap(data) dataMap["Count"] = count data = dataMap } } else { dataMap := toMap(data) if c, ok := dataMap["Count"]; ok { count = c } } p, _ := lang.Plural(count) template := translation.Template(p) if template == nil { return translationID } s := template.Execute(data) if s == "" { return translationID } return s }
func (b *Bundle) translate(lang *language.Language, translationID string, args ...interface{}) string { if lang == nil { return translationID } translations := b.translations[lang.Tag] if translations == nil { translations = b.fallbackTranslations[lang.Tag] if translations == nil { return translationID } } translation := translations[translationID] if translation == nil { return translationID } var count interface{} if len(args) > 0 && isNumber(args[0]) { count = args[0] args = args[1:] } plural, _ := lang.Plural(count) template := translation.Template(plural) if template == nil { return translationID } var data map[string]interface{} if len(args) > 0 { data = toMap(args[0]) } if isNumber(count) { if data == nil { data = map[string]interface{}{"Count": count} } else { data["Count"] = count } } s := template.Execute(data) if s == "" { return translationID } return s }
func (b *Bundle) translate(locale *locale.Locale, translationID string, args ...interface{}) string { if locale == nil { return translationID } translations := b.translations[locale.ID] if translations == nil { return translationID } translation := translations[translationID] if translation == nil { return translationID } var count interface{} if len(args) > 0 && isNumber(args[0]) { count = args[0] args = args[1:] } pluralCategory, _ := locale.Language.PluralCategory(count) template := translation.Template(pluralCategory) if template == nil { return translationID } var data map[string]interface{} if len(args) > 0 { data, _ = args[0].(map[string]interface{}) } if isNumber(count) { if data == nil { data = map[string]interface{}{"Count": count} } else { data["Count"] = count } } s := template.Execute(data) if s == "" { return translationID } return s }