message: add documentation for the m verb Also simplicied the http example: now uses MatchStrings. Change-Id: I6dabad6d59ab93baf2bd1f16735ab8c14fd45b9e Reviewed-on: https://go-review.googlesource.com/97835 Run-TryBot: Marcel van Lohuizen <mpvl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ross Light <light@google.com>
diff --git a/message/catalog_test.go b/message/catalog_test.go index ff409a8..d1fdfde 100644 --- a/message/catalog_test.go +++ b/message/catalog_test.go
@@ -18,6 +18,10 @@ c.SetString(language.English, "", "") c.SetString(language.German, "", "") + saved := DefaultCatalog + defer func() { DefaultCatalog = saved }() + DefaultCatalog = c + testCases := []struct { args string // '|'-separated list want string @@ -32,7 +36,6 @@ want: "en", }} for _, tc := range testCases { - DefaultCatalog = c t.Run(tc.args, func(t *testing.T) { got := MatchLanguage(strings.Split(tc.args, "|")...) if got != language.Make(tc.want) {
diff --git a/message/doc.go b/message/doc.go index 2f7effd..b9584a2 100644 --- a/message/doc.go +++ b/message/doc.go
@@ -31,6 +31,7 @@ // - flag # always resorts to fmt for printing // - verb 'f', 'e', 'g', 'd' use localized formatting unless the '#' flag is // specified. +// - verb 'm' inserts a translation of a string argument. // // See package fmt for more options. //
diff --git a/message/examples_test.go b/message/examples_test.go index c73eaf9..8c3dff5 100644 --- a/message/examples_test.go +++ b/message/examples_test.go
@@ -5,6 +5,7 @@ package message_test import ( + "fmt" "net/http" "golang.org/x/text/language" @@ -13,13 +14,11 @@ func Example_http() { // languages supported by this service: - matcher := language.NewMatcher(message.DefaultCatalog.Languages()) - http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { lang, _ := r.Cookie("lang") accept := r.Header.Get("Accept-Language") fallback := "en" - tag, _ := language.MatchStrings(matcher, lang.String(), accept, fallback) + tag := message.MatchLanguage(lang.String(), accept, fallback) p := message.NewPrinter(tag) @@ -40,3 +39,32 @@ // fr 123 456,78 // bn ১,২৩,৪৫৬.৭৮ } + +func ExamplePrinter_mVerb() { + message.SetString(language.Dutch, "You have chosen to play %m.", "U heeft ervoor gekozen om %m te spelen.") + message.SetString(language.Dutch, "basketball", "basketbal") + message.SetString(language.Dutch, "hockey", "ijshockey") + message.SetString(language.Dutch, "soccer", "voetbal") + message.SetString(language.BritishEnglish, "soccer", "football") + + for _, sport := range []string{"soccer", "basketball", "hockey"} { + for _, lang := range []string{"en", "en-GB", "nl"} { + p := message.NewPrinter(language.Make(lang)) + fmt.Printf("%-6s %s\n", lang, p.Sprintf("You have chosen to play %m.", sport)) + } + fmt.Println() + } + + // Output: + // en You have chosen to play soccer. + // en-GB You have chosen to play football. + // nl U heeft ervoor gekozen om voetbal te spelen. + // + // en You have chosen to play basketball. + // en-GB You have chosen to play basketball. + // nl U heeft ervoor gekozen om basketbal te spelen. + // + // en You have chosen to play hockey. + // en-GB You have chosen to play hockey. + // nl U heeft ervoor gekozen om ijshockey te spelen. +}