Я хочу использовать 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/
Есть ли способ на Голанге получить текущий десятичный разделитель ОС в Windows?
Мне не удалось определить, как извлечь эту информацию из текстового пакета.