|  | // 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 | 
|  | } |