如何从字符串中获取有效的IETF语言标记

时间:2018-01-30 09:56:17

标签: go locale

我想将语言环境标记转换为IETF标准。 IETF语言标记将en-US断言为美式英语的正确标记。 在可能的情况下,我可能会en_US作为输入。

目前我正在使用此方法:

func toLanguageTag(l string) string {
    return strings.Replace(l, "_", "-", -1)
}

例如,我知道Java有toLanguageTag方法。我应该继续使用这种方法,还是有更好的方法来做我想做的事情?

1 个答案:

答案 0 :(得分:4)

Go的外部包存储库中有一个包(由Go项目维护,但不是标准库的一部分),用于处理语言标记的解析和验证。

https://godoc.org/golang.org/x/text/language

示例:

package main

import (
   "fmt"
   "golang.org/x/text/language"
)

func main() {
   tag := language.Make("en_us")
   fmt.Println(tag)
}
// Output: en-US

请注意,language.Make()在标记无效时会忽略错误。您应该使用language.Parse(),它会在实践中返回错误。