// parent computes the structural parent. This means inheritance may change // script. So, unlike the CLDR parent, parent(zh-Hant) == zh. func parent(t language.Tag) language.Tag { if t.TypeForKey("va") != "" { t, _ = t.SetTypeForKey("va", "") return t } result := language.Und if b, s, r := t.Raw(); (r != language.Region{}) { result, _ = language.Raw.Compose(b, s, t.Extensions()) } else if (s != language.Script{}) { result, _ = language.Raw.Compose(b, t.Extensions()) } else if (b != language.Base{}) { result, _ = language.Raw.Compose(t.Extensions()) } return result }