Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/go-i18n.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Snyder <nickdsnyder@gmail.com>2019-05-09 07:44:05 +0300
committerGitHub <noreply@github.com>2019-05-09 07:44:05 +0300
commit20fdd68b429453657bbafe7db8513794c0d04626 (patch)
tree204b810d787c0c21597ebd064e426e209af30607
parent3b004414b00363adb329d3dd6ae8cb561aa43b08 (diff)
add convenience functions (#173)
-rw-r--r--v2/i18n/localizer.go14
-rw-r--r--v2/i18n/localizer_test.go34
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))
}
})
}