vendor: update all dependencies
This commit is contained in:
+1
-1
@@ -63,7 +63,7 @@ var testCases = []testCase{{
|
||||
},
|
||||
match: []string{
|
||||
"gr -> en",
|
||||
"en-US -> en",
|
||||
"en-US -> en-u-rg-uszzzz",
|
||||
},
|
||||
tags: langs("en"),
|
||||
}, {
|
||||
|
||||
+5
-2
@@ -18,12 +18,16 @@ func TestMatchLanguage(t *testing.T) {
|
||||
c.SetString(language.English, "", "")
|
||||
c.SetString(language.German, "", "")
|
||||
|
||||
saved := DefaultCatalog
|
||||
defer func() { DefaultCatalog = saved }()
|
||||
DefaultCatalog = c
|
||||
|
||||
testCases := []struct {
|
||||
args string // '|'-separated list
|
||||
want string
|
||||
}{{
|
||||
args: "de-CH",
|
||||
want: "de",
|
||||
want: "de-u-rg-chzzzz",
|
||||
}, {
|
||||
args: "bn-u-nu-latn|en-US,en;q=0.9,de;q=0.8,nl;q=0.7",
|
||||
want: "bn-u-nu-latn",
|
||||
@@ -32,7 +36,6 @@ func TestMatchLanguage(t *testing.T) {
|
||||
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) {
|
||||
|
||||
+1
@@ -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.
|
||||
//
|
||||
|
||||
+31
-3
@@ -5,6 +5,7 @@
|
||||
package message_test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"golang.org/x/text/language"
|
||||
@@ -13,13 +14,11 @@ import (
|
||||
|
||||
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 @@ func ExamplePrinter_numbers() {
|
||||
// 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.
|
||||
}
|
||||
|
||||
+7
@@ -156,6 +156,13 @@ func lookupAndFormat(p *printer, r Reference, a []interface{}) {
|
||||
}
|
||||
}
|
||||
|
||||
type rawPrinter struct {
|
||||
p *printer
|
||||
}
|
||||
|
||||
func (p rawPrinter) Render(msg string) { p.p.WriteString(msg) }
|
||||
func (p rawPrinter) Arg(i int) interface{} { return nil }
|
||||
|
||||
// Arg implements catmsg.Renderer.
|
||||
func (p *printer) Arg(i int) interface{} { // TODO, also return "ok" bool
|
||||
i--
|
||||
|
||||
+12
-1
@@ -128,7 +128,7 @@ func TestLocalization(t *testing.T) {
|
||||
{"und", "hello %-42%%s ", joeAndMary, "hello %Joe %!(EXTRA string=Mary)"},
|
||||
},
|
||||
}, {
|
||||
desc: "number formatting", // work around limitation of fmt
|
||||
desc: "number formatting",
|
||||
cat: []entry{
|
||||
{"und", "files", "%d files left"},
|
||||
{"und", "meters", "%.2f meters"},
|
||||
@@ -141,6 +141,17 @@ func TestLocalization(t *testing.T) {
|
||||
{"de-CH", "files", args(1234), "1’234 Dateien übrig"},
|
||||
{"de-CH-u-nu-mong", "files", args(1234), "᠑’᠒᠓᠔ Dateien übrig"},
|
||||
},
|
||||
}, {
|
||||
desc: "substitute translation",
|
||||
cat: []entry{
|
||||
{"en", "google", "Google"},
|
||||
{"en", "sub", "%s"},
|
||||
{"en", "visit", "Lookup: %m."},
|
||||
},
|
||||
test: []test{
|
||||
{"en", "visit", args("google"), "Lookup: Google."},
|
||||
{"en", "visit", args("sub"), "Lookup: %s."},
|
||||
},
|
||||
}}
|
||||
|
||||
for _, tc := range testCases {
|
||||
|
||||
+5
@@ -467,6 +467,11 @@ func (p *printer) fmtString(v string, verb rune) {
|
||||
p.fmt.fmt_sx(v, udigits)
|
||||
case 'q':
|
||||
p.fmt.fmt_q(v)
|
||||
case 'm':
|
||||
ctx := p.cat.Context(p.tag, rawPrinter{p})
|
||||
if ctx.Execute(v) == catalog.ErrNotFound {
|
||||
p.WriteString(v)
|
||||
}
|
||||
default:
|
||||
p.badVerb(verb)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user