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.
+}