diff options
author | Nick Snyder <nickdsnyder@gmail.com> | 2019-05-09 07:44:05 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-09 07:44:05 +0300 |
commit | 20fdd68b429453657bbafe7db8513794c0d04626 (patch) | |
tree | 204b810d787c0c21597ebd064e426e209af30607 | |
parent | 3b004414b00363adb329d3dd6ae8cb561aa43b08 (diff) |
add convenience functions (#173)
-rw-r--r-- | v2/i18n/localizer.go | 14 | ||||
-rw-r--r-- | v2/i18n/localizer_test.go | 34 |
2 files changed, 37 insertions, 11 deletions
diff --git a/v2/i18n/localizer.go b/v2/i18n/localizer.go index e149f45..bd34567 100644 --- a/v2/i18n/localizer.go +++ b/v2/i18n/localizer.go @@ -105,6 +105,20 @@ func (l *Localizer) Localize(lc *LocalizeConfig) (string, error) { return msg, err } +// Localize returns a localized message. +func (l *Localizer) LocalizeMessage(msg *Message) (string, error) { + return l.Localize(&LocalizeConfig{ + DefaultMessage: msg, + }) +} + +// Localize returns a localized message. +func (l *Localizer) LocalizeMessageID(messageID string) (string, error) { + return l.Localize(&LocalizeConfig{ + MessageID: messageID, + }) +} + // LocalizeWithTag returns a localized message and the language tag. func (l *Localizer) LocalizeWithTag(lc *LocalizeConfig) (string, language.Tag, error) { messageID := lc.MessageID diff --git a/v2/i18n/localizer_test.go b/v2/i18n/localizer_test.go index 9328a6a..0b3a6b7 100644 --- a/v2/i18n/localizer_test.go +++ b/v2/i18n/localizer_test.go @@ -8,7 +8,7 @@ import ( ) func TestLocalizer_Localize(t *testing.T) { - testCases := []struct { + tests := []struct { name string defaultLanguage language.Tag messages map[language.Tag][]*Message @@ -542,21 +542,33 @@ func TestLocalizer_Localize(t *testing.T) { expectedErr: &MessageNotFoundErr{messageID: "Hello"}, }, } - for _, testCase := range testCases { - t.Run(testCase.name, func(t *testing.T) { - bundle := NewBundle(testCase.defaultLanguage) - for tag, messages := range testCase.messages { + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + bundle := NewBundle(test.defaultLanguage) + for tag, messages := range test.messages { if err := bundle.AddMessages(tag, messages...); err != nil { t.Fatal(err) } } - localizer := NewLocalizer(bundle, testCase.acceptLangs...) - localized, err := localizer.Localize(testCase.conf) - if !reflect.DeepEqual(err, testCase.expectedErr) { - t.Errorf("expected error %#v; got %#v", testCase.expectedErr, err) + check := func(localized string, err error) { + t.Helper() + if !reflect.DeepEqual(err, test.expectedErr) { + t.Errorf("expected error %#v; got %#v", test.expectedErr, err) + } + if localized != test.expectedLocalized { + t.Errorf("expected localized string %q; got %q", test.expectedLocalized, localized) + } + } + localizer := NewLocalizer(bundle, test.acceptLangs...) + check(localizer.Localize(test.conf)) + + if test.conf.DefaultMessage != nil && reflect.DeepEqual(test.conf, &LocalizeConfig{DefaultMessage: test.conf.DefaultMessage}) { + check(localizer.LocalizeMessage(test.conf.DefaultMessage)) } - if localized != testCase.expectedLocalized { - t.Errorf("expected localized string %q; got %q", testCase.expectedLocalized, localized) + + if test.conf.MessageID != "" && reflect.DeepEqual(test.conf, &LocalizeConfig{MessageID: test.conf.MessageID}) { + check(localizer.LocalizeMessageID(test.conf.MessageID)) } }) } |