我想将语言环境标记转换为IETF标准。
IETF语言标记将en-US
断言为美式英语的正确标记。
在可能的情况下,我可能会en_US
作为输入。
目前我正在使用此方法:
func toLanguageTag(l string) string {
return strings.Replace(l, "_", "-", -1)
}
例如,我知道Java有toLanguageTag
方法。我应该继续使用这种方法,还是有更好的方法来做我想做的事情?
答案 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()
,它会在实践中返回错误。