diff --git a/message/pipeline/pipeline_test.go b/message/pipeline/pipeline_test.go
index cb1d3b5..327e90d 100644
--- a/message/pipeline/pipeline_test.go
+++ b/message/pipeline/pipeline_test.go
@@ -14,7 +14,10 @@
 	"os"
 	"path"
 	"path/filepath"
+	"strings"
 	"testing"
+
+	"golang.org/x/text/language"
 )
 
 var genFiles = flag.Bool("gen", false, "generate output files instead of comparing")
@@ -36,10 +39,11 @@
 			dir := filepath.Join(path, f.Name())
 			pkgPath := fmt.Sprintf("%s/%s", path, f.Name())
 			config := Config{
-				Packages:   []string{pkgPath},
-				Dir:        filepath.Join(dir, "locales"),
-				GenFile:    "catalog_gen.go",
-				GenPackage: pkgPath,
+				SourceLanguage: language.AmericanEnglish,
+				Packages:       []string{pkgPath},
+				Dir:            filepath.Join(dir, "locales"),
+				GenFile:        "catalog_gen.go",
+				GenPackage:     pkgPath,
 			}
 			// TODO: load config if available.
 			s, err := Extract(&config)
@@ -85,9 +89,19 @@
 			scanGot := bufio.NewScanner(bytes.NewReader(got))
 			scanWant := bufio.NewScanner(bytes.NewReader(want))
 			line := 0
+			clean := func(s string) string {
+				s = path.Clean(filepath.ToSlash(s))
+				if i := strings.LastIndex(s, "Size:"); i != -1 {
+					s = s[:i]
+				}
+				if i := strings.LastIndex(s, "Total table size"); i != -1 {
+					s = s[:i]
+				}
+				return s
+			}
 			for scanGot.Scan() && scanWant.Scan() {
-				got := path.Clean(filepath.ToSlash(scanGot.Text()))
-				want := path.Clean(filepath.ToSlash(scanWant.Text()))
+				got := clean(scanGot.Text())
+				want := clean(scanWant.Text())
 				if got != want {
 					t.Errorf("file %q differs from .want file at line %d:\n\t%s\n\t%s", gotFile, line, got, want)
 					break
diff --git a/message/pipeline/testdata/test1/catalog_gen.go b/message/pipeline/testdata/test1/catalog_gen.go
index 08ab3b8..8195287 100644
--- a/message/pipeline/testdata/test1/catalog_gen.go
+++ b/message/pipeline/testdata/test1/catalog_gen.go
@@ -28,7 +28,7 @@
 		"en_US": &dictionary{index: en_USIndex, data: en_USData},
 		"zh":    &dictionary{index: zhIndex, data: zhData},
 	}
-	fallback := language.MustParse("und")
+	fallback := language.MustParse("en-US")
 	cat, err := catalog.NewFromMap(dict, catalog.Fallback(fallback))
 	if err != nil {
 		panic(err)
diff --git a/message/pipeline/testdata/test1/catalog_gen.go.want b/message/pipeline/testdata/test1/catalog_gen.go.want
new file mode 100644
index 0000000..8195287
--- /dev/null
+++ b/message/pipeline/testdata/test1/catalog_gen.go.want
@@ -0,0 +1,83 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+package main
+
+import (
+	"golang.org/x/text/language"
+	"golang.org/x/text/message"
+	"golang.org/x/text/message/catalog"
+)
+
+type dictionary struct {
+	index []uint32
+	data  string
+}
+
+func (d *dictionary) Lookup(key string) (data string, ok bool) {
+	p := messageKeyToIndex[key]
+	start, end := d.index[p], d.index[p+1]
+	if start == end {
+		return "", false
+	}
+	return d.data[start:end], true
+}
+
+func init() {
+	dict := map[string]catalog.Dictionary{
+		"de":    &dictionary{index: deIndex, data: deData},
+		"en_US": &dictionary{index: en_USIndex, data: en_USData},
+		"zh":    &dictionary{index: zhIndex, data: zhData},
+	}
+	fallback := language.MustParse("en-US")
+	cat, err := catalog.NewFromMap(dict, catalog.Fallback(fallback))
+	if err != nil {
+		panic(err)
+	}
+	message.DefaultCatalog = cat
+}
+
+var messageKeyToIndex = map[string]int{
+	"%.2[1]f miles traveled (%[1]f)": 7,
+	"%[1]s is visiting %[3]s!\n":     3,
+	"%d files remaining!":            4,
+	"%d more files remaining!":       5,
+	"%s is out of order!":            6,
+	"%s is visiting %s!\n":           2,
+	"Hello %s!\n":                    1,
+	"Hello world!\n":                 0,
+}
+
+var deIndex = []uint32{ // 9 elements
+	0x00000000, 0x00000011, 0x00000023, 0x0000003d,
+	0x00000057, 0x00000075, 0x00000094, 0x00000094,
+	0x00000094,
+} // Size: 60 bytes
+
+const deData string = "" + // Size: 148 bytes
+	"\x04\x00\x01\x0a\x0c\x02Hallo Welt!\x04\x00\x01\x0a\x0d\x02Hallo %[1]s!" +
+	"\x04\x00\x01\x0a\x15\x02%[1]s besucht %[2]s!\x04\x00\x01\x0a\x15\x02%[1]" +
+	"s besucht %[3]s!\x02Noch zwei Bestände zu gehen!\x02Noch %[1]d Bestände " +
+	"zu gehen!"
+
+var en_USIndex = []uint32{ // 9 elements
+	0x00000000, 0x00000012, 0x00000024, 0x00000042,
+	0x00000060, 0x00000060, 0x000000a3, 0x000000ba,
+	0x000000d9,
+} // Size: 60 bytes
+
+const en_USData string = "" + // Size: 217 bytes
+	"\x04\x00\x01\x0a\x0d\x02Hello world!\x04\x00\x01\x0a\x0d\x02Hello %[1]s!" +
+	"\x04\x00\x01\x0a\x19\x02%[1]s is visiting %[2]s!\x04\x00\x01\x0a\x19\x02" +
+	"%[1]s is visiting %[3]s!\x14\x01\x81\x01\x00\x02\x14\x02One file remaini" +
+	"ng!\x00&\x02There are %[1]d more files remaining!\x02%[1]s is out of ord" +
+	"er!\x02%.2[1]f miles traveled (%[1]f)"
+
+var zhIndex = []uint32{ // 9 elements
+	0x00000000, 0x00000000, 0x00000000, 0x00000000,
+	0x00000000, 0x00000000, 0x00000000, 0x00000000,
+	0x00000000,
+} // Size: 60 bytes
+
+const zhData string = ""
+
+// Total table size 545 bytes (0KiB); checksum: 343E0210
diff --git a/message/pipeline/testdata/test1/extracted.gotext.json b/message/pipeline/testdata/test1/extracted.gotext.json
index e109c32..4d317af 100644
--- a/message/pipeline/testdata/test1/extracted.gotext.json
+++ b/message/pipeline/testdata/test1/extracted.gotext.json
@@ -1,5 +1,5 @@
 {
-    "language": "und",
+    "language": "en-US",
     "messages": [
         {
             "id": "Hello world!",
diff --git a/message/pipeline/testdata/test1/extracted.gotext.json.want b/message/pipeline/testdata/test1/extracted.gotext.json.want
index e109c32..4d317af 100644
--- a/message/pipeline/testdata/test1/extracted.gotext.json.want
+++ b/message/pipeline/testdata/test1/extracted.gotext.json.want
@@ -1,5 +1,5 @@
 {
-    "language": "und",
+    "language": "en-US",
     "messages": [
         {
             "id": "Hello world!",
