Source File
lookup.go
Belonging Package
golang.org/x/text/internal/language
package language
import (
)
func ( []byte) (Language, error) {
if len() == 2 {
return getLangISO2()
}
return getLangISO3()
}
func ( []byte) (Language, error) {
if !tag.FixCase("zz", ) {
return 0, ErrSyntax
}
if := lang.Index(); != -1 && lang.Elem()[3] != 0 {
return Language(), nil
}
return 0, NewValueError()
}
const base = 'z' - 'a' + 1
func ( []byte) uint {
:= uint(0)
for := 0; < len(); ++ {
*= base
+= uint([] - 'a')
}
return
}
:= Language()
if == nonCanonicalUnd {
return 0, nil
}
return , nil
}
}
if := altLangISO3.Index(); != -1 {
return Language(altLangIndex[altLangISO3.Elem()[3]]), nil
}
:= strToInt()
if langNoIndex[/8]&(1<<(%8)) != 0 {
return Language() + langNoIndexOffset, nil
func ( Language) () string {
if == 0 || >= langNoIndexOffset {
return .String()
}
:= lang.Elem(int())
if [3] == 0 {
return [:3]
} else if [2] == 0 {
return altLangISO3.Elem(int([3]))[:3]
return [0:1] + [2:4]
}
func ( Language) () bool {
return langPrivateStart <= && <= langPrivateEnd
}
func ( Language) () Script {
if < langNoIndexOffset {
return Script(suppressScript[])
}
return 0
}
type Region uint16
func ( []byte) (Region, error) {
if len() == 3 {
if isAlpha([0]) {
return getRegionISO3()
}
if , := strconv.ParseUint(string(), 10, 10); == nil {
return getRegionM49(int())
}
}
return getRegionISO2()
}
func ( []byte) (Region, error) {
if tag.FixCase("ZZZ", ) {
for := regionISO.Index([:1]); != -1; = regionISO.Next([:1], ) {
if := regionISO.Elem(); [2] == [1] && [3] == [2] {
return Region() + isoRegionOffset, nil
}
}
for := 0; < len(altRegionISO3); += 3 {
if tag.Compare(altRegionISO3[:+3], ) == 0 {
return Region(altRegionIDs[/3]), nil
}
}
return 0, NewValueError()
}
return 0, ErrSyntax
}
func ( int) (Region, error) {
if 0 < && <= 999 {
const (
= 7
= 9
= 1<< - 1
)
:= >>
:= fromM49[m49Index[]:m49Index[+1]]
:= uint16() << // we rely on bits shifting out
:= sort.Search(len(), func( int) bool {
return [] >=
})
if := fromM49[int(m49Index[])+]; &^ == {
return Region( & ), nil
}
}
var ValueError
fmt.Fprint(bytes.NewBuffer([]byte(.v[:])), )
return 0,
}
func ( Region) () string {
if < isoRegionOffset {
if == 0 {
return "ZZ"
}
return fmt.Sprintf("%03d", .M49())
}
-= isoRegionOffset
return regionISO.Elem(int())[:2]
}
func ( Region) () string {
if < isoRegionOffset {
return "ZZZ"
}
-= isoRegionOffset
:= regionISO.Elem(int())
switch [2] {
case 0:
return altRegionISO3[[3]:][:3]
case ' ':
return "ZZZ"
}
return [0:1] + [2:4]
}
func ( Script) () bool {
return _Qaaa <= && <= _Qabx
}
const (
maxAltTaglen = len("en-US-POSIX")
maxLen = maxAltTaglen
)
grandfatheredMap = map[[maxLen]byte]int16{
[maxLen]byte{'a', 'r', 't', '-', 'l', 'o', 'j', 'b', 'a', 'n'}: _jbo, // art-lojban
[maxLen]byte{'i', '-', 'a', 'm', 'i'}: _ami, // i-ami
[maxLen]byte{'i', '-', 'b', 'n', 'n'}: _bnn, // i-bnn
[maxLen]byte{'i', '-', 'h', 'a', 'k'}: _hak, // i-hak
[maxLen]byte{'i', '-', 'k', 'l', 'i', 'n', 'g', 'o', 'n'}: _tlh, // i-klingon
[maxLen]byte{'i', '-', 'l', 'u', 'x'}: _lb, // i-lux
[maxLen]byte{'i', '-', 'n', 'a', 'v', 'a', 'j', 'o'}: _nv, // i-navajo
[maxLen]byte{'i', '-', 'p', 'w', 'n'}: _pwn, // i-pwn
[maxLen]byte{'i', '-', 't', 'a', 'o'}: _tao, // i-tao
[maxLen]byte{'i', '-', 't', 'a', 'y'}: _tay, // i-tay
[maxLen]byte{'i', '-', 't', 's', 'u'}: _tsu, // i-tsu
[maxLen]byte{'n', 'o', '-', 'b', 'o', 'k'}: _nb, // no-bok
[maxLen]byte{'n', 'o', '-', 'n', 'y', 'n'}: _nn, // no-nyn
[maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'f', 'r'}: _sfb, // sgn-BE-FR
[maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'n', 'l'}: _vgt, // sgn-BE-NL
[maxLen]byte{'s', 'g', 'n', '-', 'c', 'h', '-', 'd', 'e'}: _sgg, // sgn-CH-DE
[maxLen]byte{'z', 'h', '-', 'g', 'u', 'o', 'y', 'u'}: _cmn, // zh-guoyu
[maxLen]byte{'z', 'h', '-', 'h', 'a', 'k', 'k', 'a'}: _hak, // zh-hakka
[maxLen]byte{'z', 'h', '-', 'm', 'i', 'n', '-', 'n', 'a', 'n'}: _nan, // zh-min-nan
[maxLen]byte{'z', 'h', '-', 'x', 'i', 'a', 'n', 'g'}: _hsn, // zh-xiang
[maxLen]byte{'c', 'e', 'l', '-', 'g', 'a', 'u', 'l', 'i', 's', 'h'}: -1, // cel-gaulish
[maxLen]byte{'e', 'n', '-', 'g', 'b', '-', 'o', 'e', 'd'}: -2, // en-GB-oed
[maxLen]byte{'i', '-', 'd', 'e', 'f', 'a', 'u', 'l', 't'}: -3, // i-default
[maxLen]byte{'i', '-', 'e', 'n', 'o', 'c', 'h', 'i', 'a', 'n'}: -4, // i-enochian
[maxLen]byte{'i', '-', 'm', 'i', 'n', 'g', 'o'}: -5, // i-mingo
[maxLen]byte{'z', 'h', '-', 'm', 'i', 'n'}: -6, // zh-min
[maxLen]byte{'r', 'o', 'o', 't'}: 0, // root
[maxLen]byte{'e', 'n', '-', 'u', 's', '-', 'p', 'o', 's', 'i', 'x'}: -7, // en_US_POSIX"
}
altTagIndex = [...]uint8{0, 17, 31, 45, 61, 74, 86, 102}
altTags = "xtg-x-cel-gaulishen-GB-oxendicten-x-i-defaultund-x-i-enochiansee-x-i-mingonan-x-zh-minen-US-u-va-posix"
)
func ( [maxAltTaglen]byte) ( Tag, bool) {
if , := grandfatheredMap[]; {
if < 0 {
return Make(altTags[altTagIndex[--1]:altTagIndex[-]]), true
}
.LangID = Language()
return , true
}
return , false
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |