为什么该地区是一个空洞的语言"美国"?

时间:2017-08-06 17:51:17

标签: go

我正在使用官方/非官方语言包并且有:

package main

import (
    "log"

    "golang.org/x/text/language"
)

func main() {
    reg, _ := language.Tag{}.Region()
    log.Println(reg.Canonicalize()) // US
}

我期待" ZZ"。为什么"美国"?我在文档中找不到任何内容。

2 个答案:

答案 0 :(得分:0)

如果查看方法tag{}.Region()的源代码,您会看到如果未指定区域,则会尝试添加标记并将可能性设置为低。 addTags()如果你看一下addTags()的实现,你会看到

if t.lang == 0 {
  t.lang = _en // default language
}

默认语言设置为英语。欢呼声。

答案 1 :(得分:0)

如果未定义标记的语言(默认为零),则它只从likelyLang array获取第一个值。

    x := likelyLang[t.lang]
    ...
    if x.region != 0 {
        t.setUndefinedScript(scriptID(x.script))
        t.setUndefinedRegion(regionID(x.region))
    }

它有_US(0x134)区域代码(惊喜)。之后,它将区域复制到输入标签。

P.S。 @ reticentroot的答案大致相同。在调查过程中没有看到它。