Skip to content

Commit

Permalink
add GetLocale
Browse files Browse the repository at this point in the history
  • Loading branch information
xurwxj committed May 27, 2021
1 parent 556cebf commit 992526e
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions sys/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"os"
"os/exec"
"path/filepath"
"runtime"
"strconv"
"strings"

Expand Down Expand Up @@ -184,6 +185,9 @@ func CheckOsExtInfo(OssE OSSoftExtObj, Log *zerolog.Logger) OSSoftExtObj {
if OssE.Resolution == "" {
OssE.Resolution = "unknown"
}
if OssE.Lang == "" {
OssE.Lang, _ = GetLocale()
}
if OssE.Lang == "" {
userLanguage, err := jibber_jabber.DetectLanguage()
if err != nil {
Expand All @@ -196,3 +200,45 @@ func CheckOsExtInfo(OssE OSSoftExtObj, Log *zerolog.Logger) OSSoftExtObj {
}
return OssE
}

// GetLocale get lang and locale from sys
func GetLocale() (string, string) {
osHost := runtime.GOOS
defaultLang := "en"
defaultLoc := "US"
switch osHost {
case "windows":
// Exec powershell Get-Culture on Windows.
cmd := exec.Command("powershell", "Get-Culture | select -exp Name")
output, err := cmd.Output()
if err == nil {
langLocRaw := strings.TrimSpace(string(output))
langLoc := strings.Split(langLocRaw, "-")
lang := langLoc[0]
loc := langLoc[1]
return lang, loc
}
case "darwin":
// Exec powershell Get-Culture on Windows.
cmd := exec.Command("sh", "osascript -e 'user locale of (get system info)'")
output, err := cmd.Output()
if err == nil {
langLocRaw := strings.TrimSpace(string(output))
langLoc := strings.Split(langLocRaw, "_")
lang := langLoc[0]
loc := langLoc[1]
return lang, loc
}
case "linux":
envlang, ok := os.LookupEnv("LANG")
if ok {
langLocRaw := strings.TrimSpace(envlang)
langLocRaw = strings.Split(envlang, ".")[0]
langLoc := strings.Split(langLocRaw, "_")
lang := langLoc[0]
loc := langLoc[1]
return lang, loc
}
}
return defaultLang, defaultLoc
}

0 comments on commit 992526e

Please sign in to comment.