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