Golang获取当前区域性的十进制分隔符

时间:2018-09-01 03:11:18

标签: go internationalization

Golang中有没有办法在Windows中获取当前的操作系统小数点分隔符?

我知道在控制面板中的“地理区域”设置中,您可以分配自定义的小数点分隔符,因此必须有一种方法来获取此值...或否?

我想使用fmt.Printf()并使用操作系统当前的十进制符号格式化任何浮点数。

1 个答案:

答案 0 :(得分:0)

  

我想使用fmt.Printf()并使用操作系统当前的十进制符号格式化任何浮点数。

要获取当前语言的操作系统,您可以使用跨平台软件包,例如https://github.com/cloudfoundry-attic/jibber_jabber

要打印本地化的文本,您可以使用此处https://godoc.org/golang.org/x/text

可用的文本包

示例

package main

import (
    "fmt"

    "github.com/cloudfoundry/jibber_jabber"
    "golang.org/x/text/language"
    "golang.org/x/text/message"
)

func main() {
    userLanguage, err := jibber_jabber.DetectLanguage()
    if err != nil {
        panic(err)
    }
    fmt.Println("Language:", userLanguage)

    tagLanguage := language.Make(userLanguage)
    fmt.Println("Language:", tagLanguage)

    {
        p := message.NewPrinter(language.BritishEnglish)
        p.Printf("There are %v flowers in our garden.\n", 1500)
    }
    {
        p := message.NewPrinter(tagLanguage)
        p.Printf("There are %v flowers in our garden.\n", 1500)
    }
}

如您所见,您不再直接使用fmt包,而是必须创建一个Printer并使用此包来适当显示文本。

要获取有关此软件包使用情况的更多详细信息,请阅读https://phraseapp.com/blog/posts/internationalization-i18n-go/

  

Golang中有没有办法在Windows中获取当前的操作系统小数点分隔符?

我无法确定如何从文本包中提取此信息。