source: code/trunk/vendor/golang.org/x/text/language/doc.go@ 145

Last change on this file since 145 was 145, checked in by Izuru Yakumo, 22 months ago

Updated the Makefile and vendored depedencies

Signed-off-by: Izuru Yakumo <yakumo.izuru@…>

File size: 4.2 KB
Line 
1// Copyright 2017 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 language implements BCP 47 language tags and related functionality.
6//
7// The most important function of package language is to match a list of
8// user-preferred languages to a list of supported languages.
9// It alleviates the developer of dealing with the complexity of this process
10// and provides the user with the best experience
11// (see https://blog.golang.org/matchlang).
12//
13// # Matching preferred against supported languages
14//
15// A Matcher for an application that supports English, Australian English,
16// Danish, and standard Mandarin can be created as follows:
17//
18// var matcher = language.NewMatcher([]language.Tag{
19// language.English, // The first language is used as fallback.
20// language.MustParse("en-AU"),
21// language.Danish,
22// language.Chinese,
23// })
24//
25// This list of supported languages is typically implied by the languages for
26// which there exists translations of the user interface.
27//
28// User-preferred languages usually come as a comma-separated list of BCP 47
29// language tags.
30// The MatchString finds best matches for such strings:
31//
32// handler(w http.ResponseWriter, r *http.Request) {
33// lang, _ := r.Cookie("lang")
34// accept := r.Header.Get("Accept-Language")
35// tag, _ := language.MatchStrings(matcher, lang.String(), accept)
36//
37// // tag should now be used for the initialization of any
38// // locale-specific service.
39// }
40//
41// The Matcher's Match method can be used to match Tags directly.
42//
43// Matchers are aware of the intricacies of equivalence between languages, such
44// as deprecated subtags, legacy tags, macro languages, mutual
45// intelligibility between scripts and languages, and transparently passing
46// BCP 47 user configuration.
47// For instance, it will know that a reader of Bokmål Danish can read Norwegian
48// and will know that Cantonese ("yue") is a good match for "zh-HK".
49//
50// # Using match results
51//
52// To guarantee a consistent user experience to the user it is important to
53// use the same language tag for the selection of any locale-specific services.
54// For example, it is utterly confusing to substitute spelled-out numbers
55// or dates in one language in text of another language.
56// More subtly confusing is using the wrong sorting order or casing
57// algorithm for a certain language.
58//
59// All the packages in x/text that provide locale-specific services
60// (e.g. collate, cases) should be initialized with the tag that was
61// obtained at the start of an interaction with the user.
62//
63// Note that Tag that is returned by Match and MatchString may differ from any
64// of the supported languages, as it may contain carried over settings from
65// the user tags.
66// This may be inconvenient when your application has some additional
67// locale-specific data for your supported languages.
68// Match and MatchString both return the index of the matched supported tag
69// to simplify associating such data with the matched tag.
70//
71// # Canonicalization
72//
73// If one uses the Matcher to compare languages one does not need to
74// worry about canonicalization.
75//
76// The meaning of a Tag varies per application. The language package
77// therefore delays canonicalization and preserves information as much
78// as possible. The Matcher, however, will always take into account that
79// two different tags may represent the same language.
80//
81// By default, only legacy and deprecated tags are converted into their
82// canonical equivalent. All other information is preserved. This approach makes
83// the confidence scores more accurate and allows matchers to distinguish
84// between variants that are otherwise lost.
85//
86// As a consequence, two tags that should be treated as identical according to
87// BCP 47 or CLDR, like "en-Latn" and "en", will be represented differently. The
88// Matcher handles such distinctions, though, and is aware of the
89// equivalence relations. The CanonType type can be used to alter the
90// canonicalization form.
91//
92// # References
93//
94// BCP 47 - Tags for Identifying Languages http://tools.ietf.org/html/bcp47
95package language // import "golang.org/x/text/language"
96
97// TODO: explanation on how to match languages for your own locale-specific
98// service.
Note: See TracBrowser for help on using the repository browser.