@@ -103,10 +103,16 @@ func (e *messageIDMismatchErr) Error() string {
103103
104104// Localize returns a localized message.
105105func (l * Localizer ) Localize (lc * LocalizeConfig ) (string , error ) {
106+ msg , _ , err := l .LocalizeWithTag (lc )
107+ return msg , err
108+ }
109+
110+ // LocalizeWithTag returns a localized message and the language tag.
111+ func (l * Localizer ) LocalizeWithTag (lc * LocalizeConfig ) (string , language.Tag , error ) {
106112 messageID := lc .MessageID
107113 if lc .DefaultMessage != nil {
108114 if messageID != "" && messageID != lc .DefaultMessage .ID {
109- return "" , & messageIDMismatchErr {messageID : messageID , defaultMessageID : lc .DefaultMessage .ID }
115+ return "" , language . Und , & messageIDMismatchErr {messageID : messageID , defaultMessageID : lc .DefaultMessage .ID }
110116 }
111117 messageID = lc .DefaultMessage .ID
112118 }
@@ -117,7 +123,7 @@ func (l *Localizer) Localize(lc *LocalizeConfig) (string, error) {
117123 var err error
118124 operands , err = plural .NewOperands (lc .PluralCount )
119125 if err != nil {
120- return "" , & invalidPluralCountErr {messageID : messageID , pluralCount : lc .PluralCount , err : err }
126+ return "" , language . Und , & invalidPluralCountErr {messageID : messageID , pluralCount : lc .PluralCount , err : err }
121127 }
122128 if templateData == nil {
123129 templateData = map [string ]interface {}{
@@ -127,13 +133,17 @@ func (l *Localizer) Localize(lc *LocalizeConfig) (string, error) {
127133 }
128134 tag , template := l .getTemplate (messageID , lc .DefaultMessage )
129135 if template == nil {
130- return "" , & MessageNotFoundErr {messageID : messageID }
136+ return "" , language . Und , & MessageNotFoundErr {messageID : messageID }
131137 }
132138 pluralForm := l .pluralForm (tag , operands )
133139 if pluralForm == plural .Invalid {
134- return "" , & pluralizeErr {messageID : messageID , tag : tag }
140+ return "" , language .Und , & pluralizeErr {messageID : messageID , tag : tag }
141+ }
142+ msg , err := template .Execute (pluralForm , templateData , lc .Funcs )
143+ if err != nil {
144+ return "" , language .Und , err
135145 }
136- return template . Execute ( pluralForm , templateData , lc . Funcs )
146+ return msg , tag , nil
137147}
138148
139149func (l * Localizer ) getTemplate (id string , defaultMessage * Message ) (language.Tag , * internal.MessageTemplate ) {
0 commit comments