func init() { tags := make([]language.Tag, numSupported) s := supported for i := range tags { p := strings.IndexByte(s, '|') tags[i] = language.Raw.Make(s[:p]) s = s[p+1:] } matcher = language.NewMatcher(tags) Supported = language.NewCoverage(tags) Values = language.NewCoverage(langTagSet.Tags, supportedScripts, supportedRegions) }
return nameRegion(n, x) } // A SelfNamer implements a Namer that returns the name of language in this same // language. It provides a very compact mechanism to provide a comprehensive // list of languages to users in their native language. type SelfNamer struct { // Supported defines the values supported by this Namer. Supported language.Coverage } var ( // Self is a shared instance of a SelfNamer. Self *SelfNamer = &self self = SelfNamer{language.NewCoverage(selfTagSet.Tags)} ) // Name returns the name of a given language tag in the language identified by // this tag. It supports both the language.Base and language.Tag types. func (n SelfNamer) Name(x interface{}) string { t, _ := language.All.Compose(x) base, scr, reg := t.Raw() baseScript := language.Script{} if (scr == language.Script{} && reg != language.Region{}) { // For looking up in the self dictionary, we need to select the // maximized script. This is even the case if the script isn't // specified. s1, _ := t.Script() if baseScript = getScript(base); baseScript != s1 { scr = s1