OSDN Git Service

new repo
[bytom/vapor.git] / vendor / golang.org / x / text / language / display / examples_test.go
1 // Copyright 2014 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package display_test
6
7 import (
8         "fmt"
9
10         "golang.org/x/text/language"
11         "golang.org/x/text/language/display"
12 )
13
14 func ExampleNamer() {
15         supported := []string{
16                 "en-US", "en-GB", "ja", "zh", "zh-Hans", "zh-Hant", "pt", "pt-PT", "ko", "ar", "el", "ru", "uk", "pa",
17         }
18
19         en := display.English.Languages()
20
21         for _, s := range supported {
22                 t := language.MustParse(s)
23                 fmt.Printf("%-20s (%s)\n", en.Name(t), display.Self.Name(t))
24         }
25
26         // Output:
27         // American English     (American English)
28         // British English      (British English)
29         // Japanese             (日本語)
30         // Chinese              (中文)
31         // Simplified Chinese   (简体中文)
32         // Traditional Chinese  (繁體中文)
33         // Portuguese           (português)
34         // European Portuguese  (português europeu)
35         // Korean               (한국어)
36         // Arabic               (العربية)
37         // Greek                (Ελληνικά)
38         // Russian              (русский)
39         // Ukrainian            (українська)
40         // Punjabi              (ਪੰਜਾਬੀ)
41 }
42
43 func ExampleTags() {
44         n := display.Tags(language.English)
45         fmt.Println(n.Name(language.Make("nl")))
46         fmt.Println(n.Name(language.Make("nl-BE")))
47         fmt.Println(n.Name(language.Make("nl-CW")))
48         fmt.Println(n.Name(language.Make("nl-Arab")))
49         fmt.Println(n.Name(language.Make("nl-Cyrl-RU")))
50
51         // Output:
52         // Dutch
53         // Flemish
54         // Dutch (Curaçao)
55         // Dutch (Arabic)
56         // Dutch (Cyrillic, Russia)
57 }
58
59 // ExampleDictionary shows how to reduce the amount of data linked into your
60 // binary by only using the predefined Dictionary variables of the languages you
61 // wish to support.
62 func ExampleDictionary() {
63         tags := []language.Tag{
64                 language.English,
65                 language.German,
66                 language.Japanese,
67                 language.Russian,
68         }
69         dicts := []*display.Dictionary{
70                 display.English,
71                 display.German,
72                 display.Japanese,
73                 display.Russian,
74         }
75
76         m := language.NewMatcher(tags)
77
78         getDict := func(t language.Tag) *display.Dictionary {
79                 _, i, confidence := m.Match(t)
80                 // Skip this check if you want to support a fall-back language, which
81                 // will be the first one passed to NewMatcher.
82                 if confidence == language.No {
83                         return nil
84                 }
85                 return dicts[i]
86         }
87
88         // The matcher will match Swiss German to German.
89         n := getDict(language.Make("gsw")).Languages()
90         fmt.Println(n.Name(language.German))
91         fmt.Println(n.Name(language.Make("de-CH")))
92         fmt.Println(n.Name(language.Make("gsw")))
93
94         // Output:
95         // Deutsch
96         // Schweizer Hochdeutsch
97         // Schweizerdeutsch
98 }