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 } } p, _ := lang.Plural(count) template := translation.Template(p) if template == nil { return translationID } s := template.Execute(data) if s == "" { return translationID } return s }