| // Copyright 2014 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 display_test | |
| import ( | |
| "fmt" | |
| "golang.org/x/text/language" | |
| "golang.org/x/text/language/display" | |
| "golang.org/x/text/message" | |
| ) | |
| func ExampleFormatter() { | |
| message.SetString(language.Dutch, "In %v people speak %v.", "In %v spreekt men %v.") | |
| fr := language.French | |
| region, _ := fr.Region() | |
| for _, tag := range []string{"en", "nl"} { | |
| p := message.NewPrinter(language.Make(tag)) | |
| p.Printf("In %v people speak %v.", display.Region(region), display.Language(fr)) | |
| p.Println() | |
| } | |
| // Output: | |
| // In France people speak French. | |
| // In Frankrijk spreekt men Frans. | |
| } | |
| func ExampleNamer() { | |
| supported := []string{ | |
| "en-US", "en-GB", "ja", "zh", "zh-Hans", "zh-Hant", "pt", "pt-PT", "ko", "ar", "el", "ru", "uk", "pa", | |
| } | |
| en := display.English.Languages() | |
| for _, s := range supported { | |
| t := language.MustParse(s) | |
| fmt.Printf("%-20s (%s)\n", en.Name(t), display.Self.Name(t)) | |
| } | |
| // Output: | |
| // American English (American English) | |
| // British English (British English) | |
| // Japanese (日本語) | |
| // Chinese (中文) | |
| // Simplified Chinese (简体中文) | |
| // Traditional Chinese (繁體中文) | |
| // Portuguese (português) | |
| // European Portuguese (português europeu) | |
| // Korean (한국어) | |
| // Arabic (العربية) | |
| // Greek (Ελληνικά) | |
| // Russian (русский) | |
| // Ukrainian (українська) | |
| // Punjabi (ਪੰਜਾਬੀ) | |
| } | |
| func ExampleTags() { | |
| n := display.Tags(language.English) | |
| fmt.Println(n.Name(language.Make("nl"))) | |
| fmt.Println(n.Name(language.Make("nl-BE"))) | |
| fmt.Println(n.Name(language.Make("nl-CW"))) | |
| fmt.Println(n.Name(language.Make("nl-Arab"))) | |
| fmt.Println(n.Name(language.Make("nl-Cyrl-RU"))) | |
| // Output: | |
| // Dutch | |
| // Flemish | |
| // Dutch (Curaçao) | |
| // Dutch (Arabic) | |
| // Dutch (Cyrillic, Russia) | |
| } | |
| // ExampleDictionary shows how to reduce the amount of data linked into your | |
| // binary by only using the predefined Dictionary variables of the languages you | |
| // wish to support. | |
| func ExampleDictionary() { | |
| tags := []language.Tag{ | |
| language.English, | |
| language.German, | |
| language.Japanese, | |
| language.Russian, | |
| } | |
| dicts := []*display.Dictionary{ | |
| display.English, | |
| display.German, | |
| display.Japanese, | |
| display.Russian, | |
| } | |
| m := language.NewMatcher(tags) | |
| getDict := func(t language.Tag) *display.Dictionary { | |
| _, i, confidence := m.Match(t) | |
| // Skip this check if you want to support a fall-back language, which | |
| // will be the first one passed to NewMatcher. | |
| if confidence == language.No { | |
| return nil | |
| } | |
| return dicts[i] | |
| } | |
| // The matcher will match Swiss German to German. | |
| n := getDict(language.Make("gsw")).Languages() | |
| fmt.Println(n.Name(language.German)) | |
| fmt.Println(n.Name(language.Make("de-CH"))) | |
| fmt.Println(n.Name(language.Make("gsw"))) | |
| // Output: | |
| // Deutsch | |
| // Schweizer Hochdeutsch | |
| // Schweizerdeutsch | |
| } |