diff options
author | Frédéric Guillot <fred@miniflux.net> | 2018-07-06 21:18:14 -0700 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2018-07-06 21:18:14 -0700 |
commit | 459bb4531f92f8663afb6f36aa9be5b789bd591f (patch) | |
tree | f14e6c06b8e5c63612d1ff36f8cab40ae8a99d20 /vendor/golang.org/x/text | |
parent | 34a3fe426b33a63f2d8e02d4a70c88f137fa5410 (diff) |
Update vendor dependencies
Diffstat (limited to 'vendor/golang.org/x/text')
32 files changed, 351 insertions, 1491 deletions
diff --git a/vendor/golang.org/x/text/cmd/gotext/common.go b/vendor/golang.org/x/text/cmd/gotext/common.go index 51322db..1036592 100644 --- a/vendor/golang.org/x/text/cmd/gotext/common.go +++ b/vendor/golang.org/x/text/cmd/gotext/common.go @@ -21,9 +21,6 @@ const ( // NOTE: The command line tool already prefixes with "gotext:". var ( wrap = func(err error, msg string) error { - if err == nil { - return nil - } return fmt.Errorf("%s: %v", msg, err) } errorf = fmt.Errorf diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/catalog.go b/vendor/golang.org/x/text/cmd/gotext/examples/extract/catalog.go index 1a0d6d0..4c2303f 100644 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/catalog.go +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract/catalog.go @@ -47,26 +47,24 @@ var messageKeyToIndex = map[string]int{ } var deIndex = []uint32{ // 8 elements - 0x00000000, 0x00000011, 0x00000023, 0x0000003d, - 0x00000057, 0x00000076, 0x00000076, 0x00000076, + 0x00000000, 0x0000000d, 0x0000001b, 0x00000031, + 0x00000047, 0x00000066, 0x00000066, 0x00000066, } // Size: 56 bytes -const deData string = "" + // Size: 118 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 %[1]d Bestände zu gehen!" +const deData string = "" + // Size: 102 bytes + "\x02Hallo Welt!\x0a\x02Hallo %[1]s!\x0a\x02%[1]s besucht %[2]s!\x0a\x02%" + + "[1]s besucht %[3]s!\x0a\x02Noch %[1]d Bestände zu gehen!" var en_USIndex = []uint32{ // 8 elements - 0x00000000, 0x00000012, 0x00000024, 0x00000042, - 0x00000060, 0x000000a3, 0x000000ba, 0x000000d9, + 0x00000000, 0x0000000e, 0x0000001c, 0x00000036, + 0x00000050, 0x00000093, 0x000000aa, 0x000000c9, } // Size: 56 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)" +const en_USData string = "" + // Size: 201 bytes + "\x02Hello world!\x0a\x02Hello %[1]s!\x0a\x02%[1]s is visiting %[2]s!\x0a" + + "\x02%[1]s is visiting %[3]s!\x0a\x04\x01\x81\x01\x00\x02\x14\x02One file" + + " remaining!\x00&\x02There are %[1]d more files remaining!\x02%[1]s is ou" + + "t of order!\x02%.2[1]f miles traveled (%[1]f)" var zhIndex = []uint32{ // 8 elements 0x00000000, 0x00000000, 0x00000000, 0x00000000, @@ -75,4 +73,4 @@ var zhIndex = []uint32{ // 8 elements const zhData string = "" -// Total table size 503 bytes (0KiB); checksum: A968BD6 +// Total table size 471 bytes (0KiB); checksum: 7746955 diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/messages.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/messages.gotext.json index 5e1d3b3..221990f 100755 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/messages.gotext.json +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/messages.gotext.json @@ -2,17 +2,17 @@ "language": "de", "messages": [ { - "id": "Hello world!", + "id": "Hello world!\n", "key": "Hello world!\n", - "message": "Hello world!", - "translation": "Hallo Welt!", + "message": "Hello world!\n", + "translation": "Hallo Welt!\n", "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:27:10" }, { - "id": "Hello {City}!", + "id": "Hello {City}!\n", "key": "Hello %s!\n", - "message": "Hello {City}!", - "translation": "Hallo {City}!", + "message": "Hello {City}!\n", + "translation": "Hallo {City}!\n", "placeholders": [ { "id": "City", @@ -26,10 +26,10 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:31:10" }, { - "id": "Hello {Town}!", + "id": "Hello {Town}!\n", "key": "Hello %s!\n", - "message": "Hello {Town}!", - "translation": "Hallo {Town}!", + "message": "Hello {Town}!\n", + "translation": "Hallo {Town}!\n", "placeholders": [ { "id": "Town", @@ -44,10 +44,10 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:35:10" }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!", - "translation": "{Person} besucht {Place}!", + "message": "{Person} is visiting {Place}!\n", + "translation": "{Person} besucht {Place}!\n", "placeholders": [ { "id": "Person", @@ -71,10 +71,10 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:40:10" }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!", - "translation": "{Person} besucht {Place}!", + "message": "{Person} is visiting {Place}!\n", + "translation": "{Person} besucht {Place}!\n", "comment": "Person visiting a place.", "placeholders": [ { @@ -123,9 +123,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:67:10" }, { - "id": "Use the following code for your discount: {ReferralCode}", + "id": "Use the following code for your discount: {ReferralCode}\n", "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}", + "message": "Use the following code for your discount: {ReferralCode}\n", "translation": "", "placeholders": [ { diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/out.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/out.gotext.json index 05b9330..354e8e6 100755 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/out.gotext.json +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/out.gotext.json @@ -2,16 +2,16 @@ "language": "de", "messages": [ { - "id": "Hello world!", + "id": "Hello world!\n", "key": "Hello world!\n", - "message": "Hello world!", + "message": "Hello world!\n", "translation": "", "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:28:10" }, { - "id": "Hello {City}!", + "id": "Hello {City}!\n", "key": "Hello %s!\n", - "message": "Hello {City}!", + "message": "Hello {City}!\n", "translation": "", "placeholders": [ { @@ -26,9 +26,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:32:10" }, { - "id": "Hello {Town}!", + "id": "Hello {Town}!\n", "key": "Hello %s!\n", - "message": "Hello {Town}!", + "message": "Hello {Town}!\n", "translation": "", "placeholders": [ { @@ -44,9 +44,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:36:10" }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!", + "message": "{Person} is visiting {Place}!\n", "translation": "", "placeholders": [ { @@ -71,9 +71,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:41:10" }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!", + "message": "{Person} is visiting {Place}!\n", "translation": "", "comment": "Person visiting a place.", "placeholders": [ @@ -106,13 +106,13 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:56:10" }, { - "id": "{2} files remaining!", + "id": "{} files remaining!", "key": "%d files remaining!", - "message": "{2} files remaining!", + "message": "{} files remaining!", "translation": "", "placeholders": [ { - "id": "2", + "id": "", "string": "%[1]d", "type": "int", "underlyingType": "int", @@ -140,9 +140,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:68:10" }, { - "id": "Use the following code for your discount: {ReferralCode}", + "id": "Use the following code for your discount: {ReferralCode}\n", "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}", + "message": "Use the following code for your discount: {ReferralCode}\n", "translation": "", "placeholders": [ { diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/messages.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/messages.gotext.json index 5f6f8b0..37d691b 100755 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/messages.gotext.json +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/messages.gotext.json @@ -2,23 +2,23 @@ "language": "en-US", "messages": [ { - "id": "Hello world!", +"id": "Hello world!\n", "key": "Hello world!\n", - "message": "Hello world!", - "translation": "Hello world!", + "message": "Hello world!\n", + "translation": "Hello world!\n", "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:27:10" }, { - "id": "Hello {City}!", + "id": "Hello {City}!\n", "key": "Hello %s!\n", - "message": "Hello {City}!", - "translation": "Hello {City}n" + "message": "Hello {City}!\n", + "translation": "Hello {City}!\n" }, { - "id": "Hello {Town}!", + "id": "Hello {Town}!\n", "key": "Hello %s!\n", - "message": "Hello {Town}!", - "translation": "Hello {Town}!", + "message": "Hello {Town}!\n", + "translation": "Hello {Town}!\n", "placeholders": [ { "id": "Town", @@ -32,16 +32,16 @@ ] }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!", + "message": "{Person} is visiting {Place}!\n", "translation": "{Person} is visiting {Place}!\n" }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!", - "translation": "{Person} is visiting {Place}!", + "message": "{Person} is visiting {Place}!\n", + "translation": "{Person} is visiting {Place}!\n", "comment": "Person visiting a place." }, { @@ -60,9 +60,9 @@ } }, { - "id": "Use the following code for your discount: {ReferralCode}", + "id": "Use the following code for your discount: {ReferralCode}\n", "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}", + "message": "Use the following code for your discount: {ReferralCode}\n", "translation": "" }, { diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/out.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/out.gotext.json index 69e8157..fea86e5 100755 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/out.gotext.json +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/out.gotext.json @@ -2,16 +2,16 @@ "language": "en-US", "messages": [ { - "id": "Hello world!", + "id": "Hello world!\n", "key": "Hello world!\n", - "message": "Hello world!", + "message": "Hello world!\n", "translation": "", "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:28:10" }, { - "id": "Hello {City}!", + "id": "Hello {City}!\n", "key": "Hello %s!\n", - "message": "Hello {City}!", + "message": "Hello {City}!\n", "translation": "", "placeholders": [ { @@ -26,9 +26,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:32:10" }, { - "id": "Hello {Town}!", + "id": "Hello {Town}!\n", "key": "Hello %s!\n", - "message": "Hello {Town}!", + "message": "Hello {Town}!\n", "translation": "", "placeholders": [ { @@ -44,9 +44,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:36:10" }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!", + "message": "{Person} is visiting {Place}!\n", "translation": "", "placeholders": [ { @@ -71,9 +71,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:41:10" }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!", + "message": "{Person} is visiting {Place}!\n", "translation": "", "comment": "Person visiting a place.", "placeholders": [ @@ -106,13 +106,13 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:56:10" }, { - "id": "{2} files remaining!", + "id": "{} files remaining!", "key": "%d files remaining!", - "message": "{2} files remaining!", + "message": "{} files remaining!", "translation": "", "placeholders": [ { - "id": "2", + "id": "", "string": "%[1]d", "type": "int", "underlyingType": "int", @@ -140,9 +140,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:68:10" }, { - "id": "Use the following code for your discount: {ReferralCode}", + "id": "Use the following code for your discount: {ReferralCode}\n", "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}", + "message": "Use the following code for your discount: {ReferralCode}\n", "translation": "", "placeholders": [ { diff --git a/vendor/golang.org/x/text/message/pipeline/testdata/test1/extracted.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/extracted.gotext.json index 4d317af..fea86e5 100644..100755 --- a/vendor/golang.org/x/text/message/pipeline/testdata/test1/extracted.gotext.json +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/extracted.gotext.json @@ -2,16 +2,16 @@ "language": "en-US", "messages": [ { - "id": "Hello world!", + "id": "Hello world!\n", "key": "Hello world!\n", - "message": "Hello world!", + "message": "Hello world!\n", "translation": "", - "position": "testdata/test1/test1.go:19:10" + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:28:10" }, { - "id": "Hello {City}!", + "id": "Hello {City}!\n", "key": "Hello %s!\n", - "message": "Hello {City}!", + "message": "Hello {City}!\n", "translation": "", "placeholders": [ { @@ -23,12 +23,30 @@ "expr": "city" } ], - "position": "testdata/test1/test1.go:24:10" + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:32:10" }, { - "id": "{Person} is visiting {Place}!", + "id": "Hello {Town}!\n", + "key": "Hello %s!\n", + "message": "Hello {Town}!\n", + "translation": "", + "placeholders": [ + { + "id": "Town", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "town", + "comment": "Town" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:36:10" + }, + { + "id": "{Person} is visiting {Place}!\n", "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!", + "message": "{Person} is visiting {Place}!\n", "translation": "", "placeholders": [ { @@ -50,14 +68,14 @@ "comment": "Place the person is visiting." } ], - "position": "testdata/test1/test1.go:30:10" + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:41:10" }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!", + "message": "{Person} is visiting {Place}!\n", "translation": "", - "comment": "Field names are placeholders.", + "comment": "Person visiting a place.", "placeholders": [ { "id": "Person", @@ -85,16 +103,16 @@ "expr": "pp.extra" } ], - "position": "testdata/test1/test1.go:44:10" + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:56:10" }, { - "id": "{2} files remaining!", + "id": "{} files remaining!", "key": "%d files remaining!", - "message": "{2} files remaining!", + "message": "{} files remaining!", "translation": "", "placeholders": [ { - "id": "2", + "id": "", "string": "%[1]d", "type": "int", "underlyingType": "int", @@ -102,7 +120,7 @@ "expr": "2" } ], - "position": "testdata/test1/test1.go:51:10" + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:63:10" }, { "id": "{N} more files remaining!", @@ -119,24 +137,24 @@ "expr": "n" } ], - "position": "testdata/test1/test1.go:56:10" + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:68:10" }, { - "id": "Use the following code for your discount: {ReferralCode}", + "id": "Use the following code for your discount: {ReferralCode}\n", "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}", + "message": "Use the following code for your discount: {ReferralCode}\n", "translation": "", "placeholders": [ { "id": "ReferralCode", "string": "%[1]d", - "type": "./testdata/test1.referralCode", + "type": "golang.org/x/text/cmd/gotext/examples/extract.referralCode", "underlyingType": "int", "argNum": 1, "expr": "c" } ], - "position": "testdata/test1/test1.go:64:10" + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:74:10" }, { "id": [ @@ -146,7 +164,7 @@ "key": "%s is out of order!", "message": "{Device} is out of order!", "translation": "", - "comment": "This comment wins.\n", + "comment": "FOO\n", "placeholders": [ { "id": "Device", @@ -157,7 +175,7 @@ "expr": "device" } ], - "position": "testdata/test1/test1.go:70:10" + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:82:10" }, { "id": "{Miles} miles traveled ({Miles_1})", @@ -182,7 +200,7 @@ "expr": "miles" } ], - "position": "testdata/test1/test1.go:74:10" + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:86:10" } ] }
\ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/messages.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/messages.gotext.json index 9913f83..8530740 100755 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/messages.gotext.json +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/messages.gotext.json @@ -2,16 +2,16 @@ "language": "zh", "messages": [ { - "id": "Hello world!", +"id": "Hello world!\n", "key": "Hello world!\n", - "message": "Hello world!", + "message": "Hello world!\n", "translation": "", "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:27:10" }, { - "id": "Hello {City}!", + "id": "Hello {City}!\n", "key": "Hello %s!\n", - "message": "Hello {City}!", + "message": "Hello {City}!\n", "translation": "", "placeholders": [ { @@ -26,9 +26,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:31:10" }, { - "id": "Hello {Town}!", + "id": "Hello {Town}!\n", "key": "Hello %s!\n", - "message": "Hello {Town}!", + "message": "Hello {Town}!\n", "translation": "", "placeholders": [ { @@ -44,9 +44,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:35:10" }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!", + "message": "{Person} is visiting {Place}!\n", "translation": "", "placeholders": [ { @@ -71,9 +71,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:40:10" }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!", + "message": "{Person} is visiting {Place}!\n", "translation": "", "comment": "Person visiting a place.", "placeholders": [ diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/out.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/out.gotext.json index 6b53a34..88739a3 100755 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/out.gotext.json +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/out.gotext.json @@ -2,16 +2,16 @@ "language": "zh", "messages": [ { - "id": "Hello world!", + "id": "Hello world!\n", "key": "Hello world!\n", - "message": "Hello world!", + "message": "Hello world!\n", "translation": "", "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:28:10" }, { - "id": "Hello {City}!", + "id": "Hello {City}!\n", "key": "Hello %s!\n", - "message": "Hello {City}!", + "message": "Hello {City}!\n", "translation": "", "placeholders": [ { @@ -26,9 +26,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:32:10" }, { - "id": "Hello {Town}!", + "id": "Hello {Town}!\n", "key": "Hello %s!\n", - "message": "Hello {Town}!", + "message": "Hello {Town}!\n", "translation": "", "placeholders": [ { @@ -44,9 +44,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:36:10" }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!", + "message": "{Person} is visiting {Place}!\n", "translation": "", "placeholders": [ { @@ -71,9 +71,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:41:10" }, { - "id": "{Person} is visiting {Place}!", + "id": "{Person} is visiting {Place}!\n", "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!", + "message": "{Person} is visiting {Place}!\n", "translation": "", "comment": "Person visiting a place.", "placeholders": [ @@ -106,13 +106,13 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:56:10" }, { - "id": "{2} files remaining!", + "id": "{} files remaining!", "key": "%d files remaining!", - "message": "{2} files remaining!", + "message": "{} files remaining!", "translation": "", "placeholders": [ { - "id": "2", + "id": "", "string": "%[1]d", "type": "int", "underlyingType": "int", @@ -140,9 +140,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:68:10" }, { - "id": "Use the following code for your discount: {ReferralCode}", + "id": "Use the following code for your discount: {ReferralCode}\n", "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}", + "message": "Use the following code for your discount: {ReferralCode}\n", "translation": "", "placeholders": [ { diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/de/out.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/de/out.gotext.json index d8437c0..bd71590 100755 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/de/out.gotext.json +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/de/out.gotext.json @@ -2,9 +2,9 @@ "language": "de", "messages": [ { - "id": "Hello {From}!", + "id": "Hello {From}!\n", "key": "Hello %s!\n", - "message": "Hello {From}!", + "message": "Hello {From}!\n", "translation": "", "placeholders": [ { @@ -19,9 +19,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:22:11" }, { - "id": "Do you like your browser ({User_Agent})?", + "id": "Do you like your browser ({User_Agent})?\n", "key": "Do you like your browser (%s)?\n", - "message": "Do you like your browser ({User_Agent})?", + "message": "Do you like your browser ({User_Agent})?\n", "translation": "", "placeholders": [ { diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/en-US/out.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/en-US/out.gotext.json index de59eca..d0c4684 100755 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/en-US/out.gotext.json +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/en-US/out.gotext.json @@ -2,9 +2,9 @@ "language": "en-US", "messages": [ { - "id": "Hello {From}!", + "id": "Hello {From}!\n", "key": "Hello %s!\n", - "message": "Hello {From}!", + "message": "Hello {From}!\n", "translation": "", "placeholders": [ { @@ -19,9 +19,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:22:11" }, { - "id": "Do you like your browser ({User_Agent})?", + "id": "Do you like your browser ({User_Agent})?\n", "key": "Do you like your browser (%s)?\n", - "message": "Do you like your browser ({User_Agent})?", + "message": "Do you like your browser ({User_Agent})?\n", "translation": "", "placeholders": [ { diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/extracted.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/extracted.gotext.json new file mode 100755 index 0000000..d0c4684 --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/extracted.gotext.json @@ -0,0 +1,39 @@ +{ + "language": "en-US", + "messages": [ + { + "id": "Hello {From}!\n", + "key": "Hello %s!\n", + "message": "Hello {From}!\n", + "translation": "", + "placeholders": [ + { + "id": "From", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "r.Header.Get(\"From\")" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:22:11" + }, + { + "id": "Do you like your browser ({User_Agent})?\n", + "key": "Do you like your browser (%s)?\n", + "message": "Do you like your browser ({User_Agent})?\n", + "translation": "", + "placeholders": [ + { + "id": "User_Agent", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "r.Header.Get(\"User-Agent\")" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:24:11" + } + ] +}
\ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/zh/out.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/zh/out.gotext.json index 0bab4a7..cad0ff0 100755 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/zh/out.gotext.json +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/zh/out.gotext.json @@ -2,9 +2,9 @@ "language": "zh", "messages": [ { - "id": "Hello {From}!", + "id": "Hello {From}!\n", "key": "Hello %s!\n", - "message": "Hello {From}!", + "message": "Hello {From}!\n", "translation": "", "placeholders": [ { @@ -19,9 +19,9 @@ "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:22:11" }, { - "id": "Do you like your browser ({User_Agent})?", + "id": "Do you like your browser ({User_Agent})?\n", "key": "Do you like your browser (%s)?\n", - "message": "Do you like your browser ({User_Agent})?", + "message": "Do you like your browser ({User_Agent})?\n", "translation": "", "placeholders": [ { diff --git a/vendor/golang.org/x/text/cmd/gotext/extract.go b/vendor/golang.org/x/text/cmd/gotext/extract.go index 221e776..f1f700b 100644 --- a/vendor/golang.org/x/text/cmd/gotext/extract.go +++ b/vendor/golang.org/x/text/cmd/gotext/extract.go @@ -11,6 +11,7 @@ import ( "path/filepath" "golang.org/x/text/internal" + "golang.org/x/text/language" "golang.org/x/text/message/pipeline" ) @@ -21,10 +22,12 @@ import ( // - message rewriting var ( - lang *string + srcLang *string + lang *string ) func init() { + srcLang = cmdExtract.Flag.String("srclang", "en-US", "the source-code language") lang = cmdExtract.Flag.String("lang", "en-US", "comma-separated list of languages to process") } @@ -34,15 +37,30 @@ var cmdExtract = &Command{ Short: "extracts strings to be translated from code", } -func runExtract(cmd *Command, config *pipeline.Config, args []string) error { - config.Packages = args - state, err := pipeline.Extract(config) +func runExtract(cmd *Command, args []string) error { + tag, err := language.Parse(*srcLang) if err != nil { - return wrap(err, "extract failed") + return wrap(err, "") + } + config := &pipeline.Config{ + SourceLanguage: tag, + Packages: args, + } + out, err := pipeline.Extract(config) + + data, err := json.MarshalIndent(out, "", " ") + if err != nil { + return wrap(err, "") + } + os.MkdirAll(*dir, 0755) + // TODO: this file can probably go if we replace the extract + generate + // cycle with a init once and update cycle. + file := filepath.Join(*dir, extractFile) + if err := ioutil.WriteFile(file, data, 0644); err != nil { + return wrap(err, "could not create file") } - out := state.Extracted - langs := append(getLangs(), config.SourceLanguage) + langs := append(getLangs(), tag) langs = internal.UniqueTags(langs) for _, tag := range langs { // TODO: inject translations from existing files to avoid retranslation. diff --git a/vendor/golang.org/x/text/cmd/gotext/generate.go b/vendor/golang.org/x/text/cmd/gotext/generate.go index c8d5d79..2d34465 100644 --- a/vendor/golang.org/x/text/cmd/gotext/generate.go +++ b/vendor/golang.org/x/text/cmd/gotext/generate.go @@ -5,7 +5,16 @@ package main import ( + "encoding/json" + "fmt" + "io/ioutil" + "os" + "path/filepath" + "regexp" + "strings" + "golang.org/x/text/message/pipeline" + "golang.org/x/tools/go/loader" ) func init() { @@ -22,14 +31,74 @@ var cmdGenerate = &Command{ Short: "generates code to insert translated messages", } -func runGenerate(cmd *Command, config *pipeline.Config, args []string) error { - config.Packages = args - s, err := pipeline.Extract(config) +var transRe = regexp.MustCompile(`messages\.(.*)\.json`) + +func runGenerate(cmd *Command, args []string) error { + + prog, err := loadPackages(&loader.Config{}, args) + if err != nil { + return wrap(err, "could not load package") + } + + pkgs := prog.InitialPackages() + if len(pkgs) != 1 { + return fmt.Errorf("more than one package selected: %v", pkgs) + } + pkg := pkgs[0].Pkg.Name() + + // TODO: add in external input. Right now we assume that all files are + // manually created and stored in the textdata directory. + + // Build up index of translations and original messages. + extracted := pipeline.Locale{} + translations := []*pipeline.Locale{} + + err = filepath.Walk(*dir, func(path string, f os.FileInfo, err error) error { + if err != nil { + return wrap(err, "loading data") + } + if f.IsDir() { + return nil + } + if f.Name() == extractFile { + b, err := ioutil.ReadFile(path) + if err != nil { + return wrap(err, "read file failed") + } + if err := json.Unmarshal(b, &extracted); err != nil { + return wrap(err, "unmarshal source failed") + } + return nil + } + if f.Name() == outFile { + return nil + } + if !strings.HasSuffix(path, gotextSuffix) { + return nil + } + b, err := ioutil.ReadFile(path) + if err != nil { + return wrap(err, "read file failed") + } + var locale pipeline.Locale + if err := json.Unmarshal(b, &locale); err != nil { + return wrap(err, "parsing translation file failed") + } + translations = append(translations, &locale) + return nil + }) if err != nil { - return wrap(err, "extraction failed") + return err } - if err := s.Import(); err != nil { - return wrap(err, "import failed") + + w := os.Stdout + if *out != "" { + w, err = os.Create(*out) + if err != nil { + return wrap(err, "create file failed") + } } - return wrap(s.Generate(), "generation failed") + + _, err = pipeline.Generate(w, pkg, &extracted, translations...) + return err } diff --git a/vendor/golang.org/x/text/cmd/gotext/main.go b/vendor/golang.org/x/text/cmd/gotext/main.go index 1e6c3aa..f3f50d7 100644 --- a/vendor/golang.org/x/text/cmd/gotext/main.go +++ b/vendor/golang.org/x/text/cmd/gotext/main.go @@ -25,8 +25,6 @@ import ( "unicode" "unicode/utf8" - "golang.org/x/text/message/pipeline" - "golang.org/x/text/language" "golang.org/x/tools/go/buildutil" ) @@ -35,22 +33,7 @@ func init() { flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc) } -var ( - srcLang = flag.String("srclang", "en-US", "the source-code language") - dir = flag.String("dir", "locales", "default subdirectory to store translation files") -) - -func config() (*pipeline.Config, error) { - tag, err := language.Parse(*srcLang) - if err != nil { - return nil, wrap(err, "invalid srclang") - } - return &pipeline.Config{ - SourceLanguage: tag, - TranslationsPattern: `messages\.(.*)\.json`, - GenFile: *out, - }, nil -} +var dir = flag.String("dir", "locales", "default subdirectory to store translation files") // NOTE: the Command struct is copied from the go tool in core. @@ -59,7 +42,7 @@ func config() (*pipeline.Config, error) { type Command struct { // Run runs the command. // The args are the arguments after the command name. - Run func(cmd *Command, c *pipeline.Config, args []string) error + Run func(cmd *Command, args []string) error // UsageLine is the one-line usage message. // The first word in the line is taken to be the command name. @@ -141,11 +124,7 @@ func main() { cmd.Flag.Usage = func() { cmd.Usage() } cmd.Flag.Parse(args[1:]) args = cmd.Flag.Args() - config, err := config() - if err != nil { - fatalf("gotext: %+v", err) - } - if err := cmd.Run(cmd, config, args); err != nil { + if err := cmd.Run(cmd, args); err != nil { fatalf("gotext: %+v", err) } exit() diff --git a/vendor/golang.org/x/text/cmd/gotext/rewrite.go b/vendor/golang.org/x/text/cmd/gotext/rewrite.go index 3ee9555..a35b727 100644 --- a/vendor/golang.org/x/text/cmd/gotext/rewrite.go +++ b/vendor/golang.org/x/text/cmd/gotext/rewrite.go @@ -38,7 +38,7 @@ using Printf to allow translators to reorder arguments. `, } -func runRewrite(cmd *Command, _ *pipeline.Config, args []string) error { +func runRewrite(cmd *Command, args []string) error { w := os.Stdout if *overwrite { w = nil diff --git a/vendor/golang.org/x/text/internal/catmsg/catmsg.go b/vendor/golang.org/x/text/internal/catmsg/catmsg.go index c0bf86f..32d6c20 100644 --- a/vendor/golang.org/x/text/internal/catmsg/catmsg.go +++ b/vendor/golang.org/x/text/internal/catmsg/catmsg.go @@ -104,24 +104,20 @@ const ( msgFirst msgRaw msgString - msgAffix - // Leave some arbitrary room for future expansion: 20 should suffice. - numInternal = 20 + numFixed ) const prefix = "golang.org/x/text/internal/catmsg." var ( - // TODO: find a more stable way to link handles to message types. mutex sync.Mutex names = map[string]Handle{ prefix + "Vars": msgVars, prefix + "First": msgFirst, prefix + "Raw": msgRaw, prefix + "String": msgString, - prefix + "Affix": msgAffix, } - handlers = make([]Handler, numInternal) + handlers = make([]Handler, numFixed) ) func init() { @@ -165,20 +161,6 @@ func init() { } return true } - - handlers[msgAffix] = func(d *Decoder) bool { - // TODO: use an alternative method for common cases. - prefix := d.DecodeString() - suffix := d.DecodeString() - if prefix != "" { - d.Render(prefix) - } - ret := d.ExecuteMessage() - if suffix != "" { - d.Render(suffix) - } - return ret - } } var ( @@ -392,24 +374,3 @@ func (s String) Compile(e *Encoder) (err error) { } return err } - -// Affix is a message that adds a prefix and suffix to another message. -// This is mostly used add back whitespace to a translation that was stripped -// before sending it out. -type Affix struct { - Message Message - Prefix string - Suffix string -} - -// Compile implements Message. -func (a Affix) Compile(e *Encoder) (err error) { - // TODO: consider adding a special message type that just adds a single - // return. This is probably common enough to handle the majority of cases. - // Get some stats first, though. - e.EncodeMessageType(msgAffix) - e.EncodeString(a.Prefix) - e.EncodeString(a.Suffix) - e.EncodeMessage(a.Message) - return nil -} diff --git a/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go b/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go index b2a7a9e..485d19c 100644 --- a/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go +++ b/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go @@ -71,10 +71,6 @@ func TestCodec(t *testing.T) { m: String("foo"), tests: single("foo", ""), }, { - desc: "affix", - m: &Affix{String("foo"), "\t", "\n"}, - tests: single("\t|foo|\n", ""), - }, { desc: "missing var", m: String("foo${bar}"), enc: "\x03\x03foo\x02\x03bar", @@ -105,13 +101,6 @@ func TestCodec(t *testing.T) { }, tests: single("foo|baz", ""), }, { - desc: "affix with substitution", - m: &Affix{seq{ - &Var{"bar", String("baz")}, - String("foo${bar}"), - }, "\t", "\n"}, - tests: single("\t|foo|baz|\n", ""), - }, { desc: "shadowed variable", m: seq{ &Var{"bar", String("baz")}, @@ -151,7 +140,7 @@ func TestCodec(t *testing.T) { &Var{"bar", incomplete{}}, String("${bar}"), }, - enc: "\x00\t\b\x01\x01\x14\x04\x02bar\x03\x00\x00\x00", + enc: "\x00\t\b\x01\x01\x04\x04\x02bar\x03\x00\x00\x00", // TODO: recognize that it is cheaper to substitute bar. tests: single("bar", ""), }, { diff --git a/vendor/golang.org/x/text/message/pipeline/extract.go b/vendor/golang.org/x/text/message/pipeline/extract.go index 379cc6d..20ad914 100644 --- a/vendor/golang.org/x/text/message/pipeline/extract.go +++ b/vendor/golang.org/x/text/message/pipeline/extract.go @@ -28,12 +28,8 @@ import ( // - handle features (gender, plural) // - message rewriting -// - %m substitutions -// - `msg:"etc"` tags -// - msg/Msg top-level vars and strings. - // Extract extracts all strings form the package defined in Config. -func Extract(c *Config) (*State, error) { +func Extract(c *Config) (*Locale, error) { conf := loader.Config{} prog, err := loadPackages(&conf, c.Packages) if err != nil { @@ -145,11 +141,9 @@ func Extract(c *Config) (*State, error) { ph := placeholders{index: map[string]string{}} - trimmed, _, _ := trimWS(fmtMsg) - p := fmtparser.Parser{} p.Reset(simArgs) - for p.SetFormat(trimmed); p.Scan(); { + for p.SetFormat(fmtMsg); p.Scan(); { switch p.Status { case fmtparser.StatusText: msg += p.Text() @@ -195,14 +189,11 @@ func Extract(c *Config) (*State, error) { } } - return &State{ - Config: *c, - program: prog, - Extracted: Messages{ - Language: c.SourceLanguage, - Messages: messages, - }, - }, nil + out := &Locale{ + Language: c.SourceLanguage, + Messages: messages, + } + return out, nil } func posString(conf loader.Config, info *loader.PackageInfo, pos token.Pos) string { @@ -251,7 +242,7 @@ func strip(s string) string { if unicode.IsSpace(r) || r == '-' { return '_' } - if !unicode.In(r, unicode.Letter, unicode.Mark, unicode.Number) { + if !unicode.In(r, unicode.Letter, unicode.Mark) { return -1 } return r diff --git a/vendor/golang.org/x/text/message/pipeline/generate.go b/vendor/golang.org/x/text/message/pipeline/generate.go index 8d6f07b..c5e51bd 100644 --- a/vendor/golang.org/x/text/message/pipeline/generate.go +++ b/vendor/golang.org/x/text/message/pipeline/generate.go @@ -6,9 +6,7 @@ package pipeline import ( "fmt" - "go/build" "io" - "path/filepath" "regexp" "sort" "strings" @@ -20,66 +18,13 @@ import ( "golang.org/x/text/internal/catmsg" "golang.org/x/text/internal/gen" "golang.org/x/text/language" - "golang.org/x/tools/go/loader" ) var transRe = regexp.MustCompile(`messages\.(.*)\.json`) -// Generate writes a Go file that defines a Catalog with translated messages. -func (s *State) Generate() error { - path := s.Config.GenPackage - if path == "" { - path = "." - } - isDir := path[0] == '.' - prog, err := loadPackages(&loader.Config{}, []string{path}) - if err != nil { - return wrap(err, "could not load package") - } - pkgs := prog.InitialPackages() - if len(pkgs) != 1 { - return errorf("more than one package selected: %v", pkgs) - } - pkg := pkgs[0].Pkg.Name() - - cw, err := s.generate() - if err != nil { - return err - } - if !isDir { - gopath := build.Default.GOPATH - path = filepath.Join(gopath, filepath.FromSlash(pkgs[0].Pkg.Path())) - } - path = filepath.Join(path, s.Config.GenFile) - cw.WriteGoFile(path, pkg) // TODO: WriteGoFile should return error. - return err -} - -// WriteGen writes a Go file with the given package name to w that defines a +// Generate writes a Go file with the given package name to w, which defines a // Catalog with translated messages. -func (s *State) WriteGen(w io.Writer, pkg string) error { - cw, err := s.generate() - if err != nil { - return err - } - _, err = cw.WriteGo(w, pkg, "") - return err -} - -// Generate is deprecated; use (*State).Generate(). -func Generate(w io.Writer, pkg string, extracted *Messages, trans ...Messages) (n int, err error) { - s := State{ - Extracted: *extracted, - Translations: trans, - } - cw, err := s.generate() - if err != nil { - return 0, err - } - return cw.WriteGo(w, pkg, "") -} - -func (s *State) generate() (*gen.CodeWriter, error) { +func Generate(w io.Writer, pkg string, extracted *Locale, trans ...*Locale) (n int, err error) { // TODO: add in external input. Right now we assume that all files are // manually created and stored in the textdata directory. @@ -89,7 +34,7 @@ func (s *State) generate() (*gen.CodeWriter, error) { langVars := []string{} usedKeys := map[string]int{} - for _, loc := range s.Translations { + for _, loc := range trans { tag := loc.Language if _, ok := translations[tag]; !ok { translations[tag] = map[string]Message{} @@ -99,7 +44,7 @@ func (s *State) generate() (*gen.CodeWriter, error) { if !m.Translation.IsEmpty() { for _, id := range m.ID { if _, ok := translations[tag][id]; ok { - warnf("Duplicate translation in locale %q for message %q", tag, id) + logf("Duplicate translation in locale %q for message %q", tag, id) } translations[tag][id] = m } @@ -113,7 +58,7 @@ func (s *State) generate() (*gen.CodeWriter, error) { for _, tag := range languages { langVars = append(langVars, strings.Replace(tag.String(), "-", "_", -1)) dict := translations[tag] - for _, msg := range s.Extracted.Messages { + for _, msg := range extracted.Messages { for _, id := range msg.ID { if trans, ok := dict[id]; ok && !trans.Translation.IsEmpty() { if _, ok := usedKeys[msg.Key]; !ok { @@ -122,7 +67,7 @@ func (s *State) generate() (*gen.CodeWriter, error) { break } // TODO: log missing entry. - warnf("%s: Missing entry for %q.", tag, id) + logf("%s: Missing entry for %q.", tag, id) } } } @@ -133,12 +78,12 @@ func (s *State) generate() (*gen.CodeWriter, error) { Fallback language.Tag Languages []string }{ - Fallback: s.Extracted.Language, + Fallback: extracted.Language, Languages: langVars, } if err := lookup.Execute(cw, x); err != nil { - return nil, wrap(err, "error") + return 0, wrap(err, "error") } keyToIndex := []string{} @@ -155,29 +100,21 @@ func (s *State) generate() (*gen.CodeWriter, error) { for i, tag := range languages { dict := translations[tag] a := make([]string, len(usedKeys)) - for _, msg := range s.Extracted.Messages { + for _, msg := range extracted.Messages { for _, id := range msg.ID { if trans, ok := dict[id]; ok && !trans.Translation.IsEmpty() { m, err := assemble(&msg, &trans.Translation) if err != nil { - return nil, wrap(err, "error") - } - _, leadWS, trailWS := trimWS(msg.Key) - if leadWS != "" || trailWS != "" { - m = catmsg.Affix{ - Message: m, - Prefix: leadWS, - Suffix: trailWS, - } + return 0, wrap(err, "error") } // TODO: support macros. data, err := catmsg.Compile(tag, nil, m) if err != nil { - return nil, wrap(err, "error") + return 0, wrap(err, "error") } key := usedKeys[msg.Key] if d := a[key]; d != "" && d != data { - warnf("Duplicate non-consistent translation for key %q, picking the one for message %q", msg.Key, id) + logf("Duplicate non-consistent translation for key %q, picking the one for message %q", msg.Key, id) } a[key] = string(data) break @@ -194,7 +131,7 @@ func (s *State) generate() (*gen.CodeWriter, error) { cw.WriteVar(langVars[i]+"Index", index) cw.WriteConst(langVars[i]+"Data", strings.Join(a, "")) } - return cw, nil + return cw.WriteGo(w, pkg, "") } func assemble(m *Message, t *Text) (msg catmsg.Message, err error) { diff --git a/vendor/golang.org/x/text/message/pipeline/message.go b/vendor/golang.org/x/text/message/pipeline/message.go index b9b0b3a..8e54700 100644 --- a/vendor/golang.org/x/text/message/pipeline/message.go +++ b/vendor/golang.org/x/text/message/pipeline/message.go @@ -23,8 +23,28 @@ import ( // the format string "%d file(s) remaining". // See the examples directory for examples of extracted messages. -// Messages is used to store translations for a single language. -type Messages struct { +// Config contains configuration for the translation pipeline. +type Config struct { + SourceLanguage language.Tag + + // Supported indicates the languages for which data should be generated. + // If unspecified, it will attempt to derive the set of supported languages + // from the context. + Supported []language.Tag + + Packages []string + + // TODO: + // - Printf-style configuration + // - Template-style configuration + // - Extraction options + // - Rewrite options + // - Generation options +} + +// A Locale is used to store all information for a single locale. This type is +// used both for extraction and injection. +type Locale struct { Language language.Tag `json:"language"` Messages []Message `json:"messages"` Macros map[string]Text `json:"macros,omitempty"` diff --git a/vendor/golang.org/x/text/message/pipeline/pipeline.go b/vendor/golang.org/x/text/message/pipeline/pipeline.go index 8087bf6..733a50c 100644 --- a/vendor/golang.org/x/text/message/pipeline/pipeline.go +++ b/vendor/golang.org/x/text/message/pipeline/pipeline.go @@ -8,284 +8,33 @@ package pipeline import ( - "bytes" - "encoding/json" "fmt" "go/build" "go/parser" - "io/ioutil" "log" - "path/filepath" - "regexp" - "strings" - "text/template" - "unicode" - "golang.org/x/text/language" - "golang.org/x/text/runes" "golang.org/x/tools/go/loader" ) const ( extractFile = "extracted.gotext.json" outFile = "out.gotext.json" - gotextSuffix = "gotext.json" + gotextSuffix = ".gotext.json" ) -// Config contains configuration for the translation pipeline. -type Config struct { - // Supported indicates the languages for which data should be generated. - // The default is to support all locales for which there are matching - // translation files. - Supported []language.Tag - - // --- Extraction - - SourceLanguage language.Tag - - Packages []string - - // --- File structure - - // Dir is the root dir for all operations. - Dir string - - // TranslationsPattern is a regular expression to match incoming translation - // files. These files may appear in any directory rooted at Dir. - // language for the translation files is determined as follows: - // 1. From the Language field in the file. - // 2. If not present, from a valid language tag in the filename, separated - // by dots (e.g. "en-US.json" or "incoming.pt_PT.xmb"). - // 3. If not present, from a the closest subdirectory in which the file - // is contained that parses as a valid language tag. - TranslationsPattern string - - // OutPattern defines the location for translation files for a certain - // language. The default is "{{.Dir}}/{{.Language}}/out.{{.Ext}}" - OutPattern string - - // Format defines the file format for generated translation files. - // The default is XMB. Alternatives are GetText, XLIFF, L20n, GoText. - Format string - - Ext string - - // TODO: - // Actions are additional actions to be performed after the initial extract - // and merge. - // Actions []struct { - // Name string - // Options map[string]string - // } - - // --- Generation - - // GenFile may be in a different package. It is not defined, it will - // be written to stdout. - GenFile string - - // GenPackage is the package or relative path into which to generate the - // file. If not specified it is relative to the current directory. - GenPackage string - - // DeclareVar defines a variable to which to assing the generated Catalog. - DeclareVar string - - // SetDefault determines whether to assign the generated Catalog to - // message.DefaultCatalog. The default for this is true if DeclareVar is - // not defined, false otherwise. - SetDefault bool - - // TODO: - // - Printf-style configuration - // - Template-style configuration - // - Extraction options - // - Rewrite options - // - Generation options -} - -// Operations: -// - extract: get the strings -// - disambiguate: find messages with the same key, but possible different meaning. -// - create out: create a list of messages that need translations -// - load trans: load the list of current translations -// - merge: assign list of translations as done -// - (action)expand: analyze features and create example sentences for each version. -// - (action)googletrans: pre-populate messages with automatic translations. -// - (action)export: send out messages somewhere non-standard -// - (action)import: load messages from somewhere non-standard -// - vet program: don't pass "foo" + var + "bar" strings. Not using funcs for translated strings. -// - vet trans: coverage: all translations/ all features. -// - generate: generate Go code - -// State holds all accumulated information on translations during processing. -type State struct { - Config Config - - Package string - program *loader.Program - - Extracted Messages `json:"messages"` - - // Messages includes all messages for which there need to be translations. - // Duplicates may be eliminated. Generation will be done from these messages - // (usually after merging). - Messages []Messages - - // Translations are incoming translations for the application messages. - Translations []Messages -} - -func (s *State) dir() string { - if d := s.Config.Dir; d != "" { - return d - } - return "./locales" -} - -func outPattern(s *State) (string, error) { - c := s.Config - pat := c.OutPattern - if pat == "" { - pat = "{{.Dir}}/{{.Language}}/out.{{.Ext}}" - } - - ext := c.Ext - if ext == "" { - ext = c.Format - } - if ext == "" { - ext = gotextSuffix - } - t, err := template.New("").Parse(pat) - if err != nil { - return "", wrap(err, "error parsing template") - } - buf := bytes.Buffer{} - err = t.Execute(&buf, map[string]string{ - "Dir": s.dir(), - "Language": "%s", - "Ext": ext, - }) - return filepath.FromSlash(buf.String()), wrap(err, "incorrect OutPattern") -} - -var transRE = regexp.MustCompile(`.*\.` + gotextSuffix) - -// Import loads existing translation files. -func (s *State) Import() error { - outPattern, err := outPattern(s) - if err != nil { - return err - } - re := transRE - if pat := s.Config.TranslationsPattern; pat != "" { - if re, err = regexp.Compile(pat); err != nil { - return wrapf(err, "error parsing regexp %q", s.Config.TranslationsPattern) - } - } - x := importer{s, outPattern, re} - return x.walkImport(s.dir(), s.Config.SourceLanguage) -} - -type importer struct { - state *State - outPattern string - transFile *regexp.Regexp -} - -func (i *importer) walkImport(path string, tag language.Tag) error { - files, err := ioutil.ReadDir(path) - if err != nil { - return nil - } - for _, f := range files { - name := f.Name() - tag := tag - if f.IsDir() { - if t, err := language.Parse(name); err == nil { - tag = t - } - // We ignore errors - if err := i.walkImport(filepath.Join(path, name), tag); err != nil { - return err - } - continue - } - for _, l := range strings.Split(name, ".") { - if t, err := language.Parse(l); err == nil { - tag = t - } - } - file := filepath.Join(path, name) - // TODO: Should we skip files that match output files? - if fmt.Sprintf(i.outPattern, tag) == file { - continue - } - // TODO: handle different file formats. - if !i.transFile.MatchString(name) { - continue - } - b, err := ioutil.ReadFile(file) - if err != nil { - return wrap(err, "read file failed") - } - var translations Messages - if err := json.Unmarshal(b, &translations); err != nil { - return wrap(err, "parsing translation file failed") - } - i.state.Translations = append(i.state.Translations, translations) - } - return nil -} - -// Merge merges the extracted messages with the existing translations. -func (s *State) Merge() error { - panic("unimplemented") - return nil - -} - -// Export writes out the messages to translation out files. -func (s *State) Export() error { - panic("unimplemented") - return nil -} - -var ( - ws = runes.In(unicode.White_Space).Contains - notWS = runes.NotIn(unicode.White_Space).Contains -) - -func trimWS(s string) (trimmed, leadWS, trailWS string) { - trimmed = strings.TrimRightFunc(s, ws) - trailWS = s[len(trimmed):] - if i := strings.IndexFunc(trimmed, notWS); i > 0 { - leadWS = trimmed[:i] - trimmed = trimmed[i:] - } - return trimmed, leadWS, trailWS -} - // NOTE: The command line tool already prefixes with "gotext:". var ( wrap = func(err error, msg string) error { - if err == nil { - return nil - } return fmt.Errorf("%s: %v", msg, err) } wrapf = func(err error, msg string, args ...interface{}) error { - if err == nil { - return nil - } return wrap(err, fmt.Sprintf(msg, args...)) } errorf = fmt.Errorf ) -func warnf(format string, args ...interface{}) { - // TODO: don't log. +// TODO: don't log. +func logf(format string, args ...interface{}) { log.Printf(format, args...) } diff --git a/vendor/golang.org/x/text/message/pipeline/pipeline_test.go b/vendor/golang.org/x/text/message/pipeline/pipeline_test.go deleted file mode 100644 index 327e90d..0000000 --- a/vendor/golang.org/x/text/message/pipeline/pipeline_test.go +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package pipeline - -import ( - "bufio" - "bytes" - "encoding/json" - "flag" - "fmt" - "io/ioutil" - "os" - "path" - "path/filepath" - "strings" - "testing" - - "golang.org/x/text/language" -) - -var genFiles = flag.Bool("gen", false, "generate output files instead of comparing") - -func TestFullCycle(t *testing.T) { - const path = "./testdata" - dirs, err := ioutil.ReadDir(path) - if err != nil { - t.Fatal(err) - } - for _, f := range dirs { - t.Run(f.Name(), func(t *testing.T) { - chk := func(t *testing.T, err error) { - t.Helper() - if err != nil { - t.Fatal(err) - } - } - dir := filepath.Join(path, f.Name()) - pkgPath := fmt.Sprintf("%s/%s", path, f.Name()) - config := Config{ - 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) - chk(t, err) - chk(t, s.Import()) - // chk(t, s.Merge()) // TODO - // TODO: - // for range s.Config.Actions { - // // TODO: do the actions. - // } - // chk(t, s.Export()) // TODO - chk(t, s.Generate()) - - writeJSON(t, filepath.Join(dir, "extracted.gotext.json"), s.Extracted) - checkOutput(t, dir) - }) - } -} - -func checkOutput(t *testing.T, p string) { - filepath.Walk(p, func(p string, f os.FileInfo, err error) error { - if f.IsDir() { - return nil - } - if filepath.Ext(p) != ".want" { - return nil - } - gotFile := p[:len(p)-len(".want")] - got, err := ioutil.ReadFile(gotFile) - if err != nil { - t.Errorf("failed to read %q", p) - return nil - } - if *genFiles { - if err := ioutil.WriteFile(p, got, 0644); err != nil { - t.Fatal(err) - } - } - want, err := ioutil.ReadFile(p) - if err != nil { - t.Errorf("failed to read %q", p) - } else { - 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 := 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 - } - line++ - } - if scanGot.Scan() || scanWant.Scan() { - t.Errorf("file %q differs from .want file at line %d.", gotFile, line) - } - } - return nil - }) -} - -func writeJSON(t *testing.T, path string, x interface{}) { - data, err := json.MarshalIndent(x, "", " ") - if err != nil { - t.Fatal(err) - } - if err := ioutil.WriteFile(path, data, 0644); err != nil { - t.Fatal(err) - } -} diff --git a/vendor/golang.org/x/text/message/pipeline/rewrite.go b/vendor/golang.org/x/text/message/pipeline/rewrite.go index cf1511f..fa78324 100644 --- a/vendor/golang.org/x/text/message/pipeline/rewrite.go +++ b/vendor/golang.org/x/text/message/pipeline/rewrite.go @@ -24,11 +24,11 @@ const printerType = "golang.org/x/text/message.Printer" // machinery and rewrites strings to adopt best practices when possible. // If w is not nil the generated files are written to it, each files with a // "--- <filename>" header. Otherwise the files are overwritten. -func Rewrite(w io.Writer, args ...string) error { +func Rewrite(w io.Writer, goPackage string) error { conf := &loader.Config{ AllowErrors: true, // Allow unused instances of message.Printer. } - prog, err := loadPackages(conf, args) + prog, err := loadPackages(conf, []string{goPackage}) if err != nil { return wrap(err, "") } diff --git a/vendor/golang.org/x/text/message/pipeline/testdata/test1/catalog_gen.go b/vendor/golang.org/x/text/message/pipeline/testdata/test1/catalog_gen.go deleted file mode 100644 index 8195287..0000000 --- a/vendor/golang.org/x/text/message/pipeline/testdata/test1/catalog_gen.go +++ /dev/null @@ -1,83 +0,0 @@ -// 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/vendor/golang.org/x/text/message/pipeline/testdata/test1/catalog_gen.go.want b/vendor/golang.org/x/text/message/pipeline/testdata/test1/catalog_gen.go.want deleted file mode 100644 index 8195287..0000000 --- a/vendor/golang.org/x/text/message/pipeline/testdata/test1/catalog_gen.go.want +++ /dev/null @@ -1,83 +0,0 @@ -// 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/vendor/golang.org/x/text/message/pipeline/testdata/test1/extracted.gotext.json.want b/vendor/golang.org/x/text/message/pipeline/testdata/test1/extracted.gotext.json.want deleted file mode 100644 index 4d317af..0000000 --- a/vendor/golang.org/x/text/message/pipeline/testdata/test1/extracted.gotext.json.want +++ /dev/null @@ -1,188 +0,0 @@ -{ - "language": "en-US", - "messages": [ - { - "id": "Hello world!", - "key": "Hello world!\n", - "message": "Hello world!", - "translation": "", - "position": "testdata/test1/test1.go:19:10" - }, - { - "id": "Hello {City}!", - "key": "Hello %s!\n", - "message": "Hello {City}!", - "translation": "", - "placeholders": [ - { - "id": "City", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "city" - } - ], - "position": "testdata/test1/test1.go:24:10" - }, - { - "id": "{Person} is visiting {Place}!", - "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!", - "translation": "", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "person", - "comment": "The person of matter." - }, - { - "id": "Place", - "string": "%[2]s", - "type": "string", - "underlyingType": "string", - "argNum": 2, - "expr": "place", - "comment": "Place the person is visiting." - } - ], - "position": "testdata/test1/test1.go:30:10" - }, - { - "id": "{Person} is visiting {Place}!", - "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!", - "translation": "", - "comment": "Field names are placeholders.", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "pp.Person" - }, - { - "id": "Place", - "string": "%[3]s", - "type": "string", - "underlyingType": "string", - "argNum": 3, - "expr": "pp.Place", - "comment": "Place the person is visiting." - }, - { - "id": "Extra", - "string": "%[2]v", - "type": "int", - "underlyingType": "int", - "argNum": 2, - "expr": "pp.extra" - } - ], - "position": "testdata/test1/test1.go:44:10" - }, - { - "id": "{2} files remaining!", - "key": "%d files remaining!", - "message": "{2} files remaining!", - "translation": "", - "placeholders": [ - { - "id": "2", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "2" - } - ], - "position": "testdata/test1/test1.go:51:10" - }, - { - "id": "{N} more files remaining!", - "key": "%d more files remaining!", - "message": "{N} more files remaining!", - "translation": "", - "placeholders": [ - { - "id": "N", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "n" - } - ], - "position": "testdata/test1/test1.go:56:10" - }, - { - "id": "Use the following code for your discount: {ReferralCode}", - "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}", - "translation": "", - "placeholders": [ - { - "id": "ReferralCode", - "string": "%[1]d", - "type": "./testdata/test1.referralCode", - "underlyingType": "int", - "argNum": 1, - "expr": "c" - } - ], - "position": "testdata/test1/test1.go:64:10" - }, - { - "id": [ - "msgOutOfOrder", - "{Device} is out of order!" - ], - "key": "%s is out of order!", - "message": "{Device} is out of order!", - "translation": "", - "comment": "This comment wins.\n", - "placeholders": [ - { - "id": "Device", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "device" - } - ], - "position": "testdata/test1/test1.go:70:10" - }, - { - "id": "{Miles} miles traveled ({Miles_1})", - "key": "%.2[1]f miles traveled (%[1]f)", - "message": "{Miles} miles traveled ({Miles_1})", - "translation": "", - "placeholders": [ - { - "id": "Miles", - "string": "%.2[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - }, - { - "id": "Miles_1", - "string": "%[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - } - ], - "position": "testdata/test1/test1.go:74:10" - } - ] -}
\ No newline at end of file diff --git a/vendor/golang.org/x/text/message/pipeline/testdata/test1/locales/de/messages.gotext.json b/vendor/golang.org/x/text/message/pipeline/testdata/test1/locales/de/messages.gotext.json deleted file mode 100755 index f92e4a1..0000000 --- a/vendor/golang.org/x/text/message/pipeline/testdata/test1/locales/de/messages.gotext.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "language": "de", - "messages": [ - { - "id": "Hello world!", - "key": "Hello world!\n", - "message": "Hello world!", - "translation": "Hallo Welt!" - }, - { - "id": "Hello {City}!", - "key": "Hello %s!\n", - "message": "Hello {City}!", - "translation": "Hallo {City}!", - "placeholders": [ - { - "id": "City", - "string": "%[1]s" - } - ] - }, - { - "id": "{Person} is visiting {Place}!", - "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!", - "translation": "{Person} besucht {Place}!", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s" - }, - { - "id": "Place", - "string": "%[2]s" - } - ] - }, - { - "id": "{Person} is visiting {Place}!", - "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!", - "translation": "{Person} besucht {Place}!", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s" - }, - { - "id": "Place", - "string": "%[3]s" - }, - { - "id": "Extra", - "string": "%[2]v" - } - ] - }, - { - "id": "{2} files remaining!", - "key": "%d files remaining!", - "message": "{N} files remaining!", - "translation": "Noch zwei Bestände zu gehen!", - "placeholders": [ - { - "id": "2", - "string": "%[1]d" - } - ] - }, - { - "id": "{N} more files remaining!", - "key": "%d more files remaining!", - "message": "{N} more files remaining!", - "translation": "Noch {N} Bestände zu gehen!", - "placeholders": [ - { - "id": "N", - "string": "%[1]d" - } - ] - }, - { - "id": "Use the following code for your discount: {ReferralCode}", - "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}", - "translation": "", - "placeholders": [ - { - "id": "ReferralCode", - "string": "%[1]d" - } - ] - }, - { - "id": [ "msgOutOfOrder", "{Device} is out of order!" ], - "key": "%s is out of order!", - "message": "{Device} is out of order!", - "translation": "", - "placeholders": [ - { - "id": "Device", - "string": "%[1]s" - } - ] - }, - { - "id": "{Miles} miles traveled ({Miles_1})", - "key": "%.2[1]f miles traveled (%[1]f)", - "message": "{Miles} miles traveled ({Miles_1})", - "translation": "", - "placeholders": [ - { - "id": "Miles", - "string": "%.2[1]f" - }, - { - "id": "Miles_1", - "string": "%[1]f" - } - ] - } - ] -} diff --git a/vendor/golang.org/x/text/message/pipeline/testdata/test1/locales/en-US/messages.gotext.json b/vendor/golang.org/x/text/message/pipeline/testdata/test1/locales/en-US/messages.gotext.json deleted file mode 100755 index b984242..0000000 --- a/vendor/golang.org/x/text/message/pipeline/testdata/test1/locales/en-US/messages.gotext.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "language": "en-US", - "messages": [ - { - "id": "Hello world!", - "key": "Hello world!\n", - "message": "Hello world!", - "translation": "Hello world!" - }, - { - "id": "Hello {City}!", - "key": "Hello %s!\n", - "message": "Hello {City}!", - "translation": "Hello {City}!" - }, - { - "id": "Hello {Town}!", - "key": "Hello %s!\n", - "message": "Hello {Town}!", - "translation": "Hello {Town}!", - "placeholders": [ - { - "id": "Town", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "town", - "comment": "Town" - } - ] - }, - { - "id": "{Person} is visiting {Place}!", - "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!", - "translation": "{Person} is visiting {Place}!" - }, - { - "id": "{Person} is visiting {Place}!", - "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!", - "translation": "{Person} is visiting {Place}!" - }, - { - "id": "{2} files remaining!", - "key": "%d files remaining!", - "message": "{N} files remaining!", - "translation": "", - "placeholders": [ - { - "id": "2", - "string": "%[1]d" - } - ] - }, - { - "id": "{N} more files remaining!", - "key": "%d more files remaining!", - "message": "{N} more files remaining!", - "translation": { - "select": { - "feature": "plural", - "arg": "N", - "cases": { - "one": "One file remaining!", - "other": "There are {N} more files remaining!" - } - } - } - }, - { - "id": "Use the following code for your discount: {ReferralCode}", - "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}", - "translation": "" - }, - { - "id": [ "msgOutOfOrder", "{Device} is out of order!" ], - "key": "%s is out of order!", - "message": "{Device} is out of order!", - "translation": "{Device} is out of order!" - }, - { - "id": "{Miles} miles traveled ({Miles_1})", - "key": "%.2[1]f miles traveled (%[1]f)", - "message": "{Miles} miles traveled ({Miles_1})", - "translation": "{Miles} miles traveled ({Miles_1})" - } - ] -} diff --git a/vendor/golang.org/x/text/message/pipeline/testdata/test1/locales/zh/messages.gotext.json b/vendor/golang.org/x/text/message/pipeline/testdata/test1/locales/zh/messages.gotext.json deleted file mode 100755 index c80d1d2..0000000 --- a/vendor/golang.org/x/text/message/pipeline/testdata/test1/locales/zh/messages.gotext.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "language": "zh", - "messages": [ - { - "id": "Hello world!", - "key": "Hello world!\n", - "message": "Hello world!", - "translation": "" - }, - { - "id": "Hello {City}!", - "key": "Hello %s!\n", - "message": "Hello {City}!", - "translation": "", - "placeholders": [ - { - "id": "City", - "string": "%[1]s" - } - ] - }, - { - "id": "Hello {Town}!", - "key": "Hello %s!\n", - "message": "Hello {Town}!", - "translation": "", - "placeholders": [ - { - "id": "Town", - "string": "%[1]s" - } - ] - }, - { - "id": "{Person} is visiting {Place}!", - "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!", - "translation": "", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s" - }, - { - "id": "Place", - "string": "%[2]s" - } - ] - }, - { - "id": "{Person} is visiting {Place}!", - "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!", - "translation": "", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s" - }, - { - "id": "Place", - "string": "%[3]s" - }, - { - "id": "Extra", - "string": "%[2]v" - } - ] - }, - { - "id": "{2} files remaining!", - "key": "%d files remaining!", - "message": "{2} files remaining!", - "translation": "", - "placeholders": [ - { - "id": "", - "string": "%[1]d" - } - ] - }, - { - "id": "{N} more files remaining!", - "key": "%d more files remaining!", - "message": "{N} more files remaining!", - "translation": "", - "placeholders": [ - { - "id": "N", - "string": "%[1]d" - } - ] - }, - { - "id": "Use the following code for your discount: {ReferralCode}", - "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}", - "translation": "", - "placeholders": [ - { - "id": "ReferralCode", - "string": "%[1]d" - } - ] - }, - { - "id": [ "{Device} is out of order!", "msgOutOfOrder" ], - "key": "%s is out of order!", - "message": "{Device} is out of order!", - "translation": "", - "placeholders": [ - { - "id": "Device", - "string": "%[1]s" - } - ] - }, - { - "id": "{Miles} miles traveled ({Miles_1})", - "key": "%.2[1]f miles traveled (%[1]f)", - "message": "{Miles} miles traveled ({Miles_1})", - "translation": "", - "placeholders": [ - { - "id": "Miles", - "string": "%.2[1]f" - }, - { - "id": "Miles_1", - "string": "%[1]f" - } - ] - } - ] -}
\ No newline at end of file diff --git a/vendor/golang.org/x/text/message/pipeline/testdata/test1/test1.go b/vendor/golang.org/x/text/message/pipeline/testdata/test1/test1.go deleted file mode 100644 index 88051f9..0000000 --- a/vendor/golang.org/x/text/message/pipeline/testdata/test1/test1.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import "golang.org/x/text/message" - -func main() { - p := message.NewPrinter(message.MatchLanguage("en")) - - // NOT EXTRACTED: strings passed to Println are not extracted. - p.Println("Hello world!") - - // NOT EXTRACTED: strings passed to Print are not extracted. - p.Print("Hello world!\n") - - // Extract and trim whitespace (TODO). - p.Printf("Hello world!\n") - - // NOT EXTRACTED: city is not used as a pattern or passed to %m. - city := "Amsterdam" - // This comment is extracted. - p.Printf("Hello %s!\n", city) - - person := "Sheila" - place := "Zürich" - - // Substitutions replaced by variable names. - p.Printf("%s is visiting %s!\n", - person, // The person of matter. - place, // Place the person is visiting. - ) - - pp := struct { - Person string // The person of matter. // TODO: get this comment. - Place string - extra int - }{ - person, place, 4, - } - - // extract will drop this comment in favor of the one below. - p.Printf("%[1]s is visiting %[3]s!\n", // Field names are placeholders. - pp.Person, - pp.extra, - pp.Place, // Place the person is visiting. - ) - - // Numeric literal becomes placeholder. - p.Printf("%d files remaining!", 2) - - const n = 2 - - // Constant identifier becomes placeholder. - p.Printf("%d more files remaining!", n) - - // Infer better names from type names. - type referralCode int - - const c = referralCode(5) - - // Use type name as placeholder. - p.Printf("Use the following code for your discount: %d\n", c) - - // Use constant name as message ID. - const msgOutOfOrder = "%s is out of order!" // This comment wins. - const device = "Soda machine" - // This message has two IDs. - p.Printf(msgOutOfOrder, device) - - // Multiple substitutions for same argument. - miles := 1.2345 - p.Printf("%.2[1]f miles traveled (%[1]f)", miles) -} |