code: func (l *Localizer) LocalizeWithTag(lc *LocalizeConfig) (string, language.Tag, error) {
  	messageID := lc.MessageID
  	if lc.DefaultMessage != nil {
  		if messageID != "" && messageID != lc.DefaultMessage.ID {
  			return "", language.Und, &messageIDMismatchErr{messageID: messageID, defaultMessageID: lc.DefaultMessage.ID}
  		}
  		messageID = lc.DefaultMessage.ID
  	}
  
  	var operands *plural.Operands
  	templateData := lc.TemplateData
  	if lc.PluralCount != nil {
  		var err error
  		operands, err = plural.NewOperands(lc.PluralCount)
  		if err != nil {
  			return "", language.Und, &invalidPluralCountErr{messageID: messageID, pluralCount: lc.PluralCount, err: err}
  		}
  		if templateData == nil {
  			templateData = map[string]interface{}{
  				"PluralCount": lc.PluralCount,
  			}
  		}
  	}
  	tag, template := l.getTemplate(messageID, lc.DefaultMessage)
  	if template == nil {
  		return "", language.Und, &MessageNotFoundErr{messageID: messageID}
  	}
  	pluralForm := l.pluralForm(tag, operands)
  	if pluralForm == plural.Invalid {
  		return "", language.Und, &pluralizeErr{messageID: messageID, tag: tag}
  	}
  	msg, err := template.Execute(pluralForm, templateData, lc.Funcs)
  	if err != nil {
  		return "", language.Und, err
  	}
  	return msg, tag, nil
  }
docs: // LocalizeWithTag returns a localized message and the language tag.