英文:
How do I get the computer's current language in Go?
问题
在Go语言中,你可以使用go
包中的lang
包来获取计算机的当前语言。以下是一个示例代码:
package main
import (
"fmt"
"golang.org/x/text/language"
)
func main() {
lang := language.MustParse("")
fmt.Println(lang)
}
这段代码将打印出计算机的当前语言代码,例如en-US
表示美国英语,es-ES
表示西班牙语。你可以根据需要进一步处理这个语言代码。
英文:
How do I get the computer's current language in Go?
e.g. en-US for USA or es-es for Spain.
答案1
得分: 2
注意:Windows 不依赖于 LANG
环境变量(或 LC_*
变量:在我的 Windows 8 上没有定义任何变量)
区域设置存储在 HKCU/ControlPanel/International/LocalName
中(如此线程中所提到的)
因此,最好使用访问注册表的项目,比如:
英文:
Note: Windows doesn't not rely on LANG
environment variable (or LC_*
variables: none are defined on my Windows 8)
The locale is stored in HKCU/ControlPanel/International/LocalName
(as mentioned in this thread)
So you are better off using a project accessing the registry, like:
答案2
得分: 1
在基于*nix的系统上,您可以简单地使用os.Getenv("LANG")
来获取语言环境变量。我不确定这是否适用于Windows系统。
//编辑
@JimB提到还有其他要检查的变量,更多详细信息请查看gettext
在我的系统上:
➜ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
英文:
On *nix based systems you can simply use os.Getenv("LANG")
, I'm not sure if that applies to windows.
//edit
@JimB mentioned that there are other variables to check too, for more details check gettext
on my system:
➜ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论