()
| 300 | var osLang string |
| 301 | |
| 302 | func determineLang() string { |
| 303 | defaultLang := "en_US.UTF-8" |
| 304 | ctx, cancelFn := context.WithTimeout(context.Background(), 2*time.Second) |
| 305 | defer cancelFn() |
| 306 | if runtime.GOOS == "darwin" { |
| 307 | out, err := exec.CommandContext(ctx, "defaults", "read", "-g", "AppleLocale").CombinedOutput() |
| 308 | if err != nil { |
| 309 | log.Printf("error executing 'defaults read -g AppleLocale', will use default 'en_US.UTF-8': %v\n", err) |
| 310 | return defaultLang |
| 311 | } |
| 312 | strOut := string(out) |
| 313 | truncOut := strings.Split(strOut, "@")[0] |
| 314 | preferredLang := strings.TrimSpace(truncOut) + ".UTF-8" |
| 315 | validLangs := listValidLangs(ctx) |
| 316 | |
| 317 | if !utilfn.ContainsStr(validLangs, preferredLang) { |
| 318 | log.Printf("unable to use desired lang %s, will use default 'en_US.UTF-8'\n", preferredLang) |
| 319 | return defaultLang |
| 320 | } |
| 321 | |
| 322 | return preferredLang |
| 323 | } else { |
| 324 | // this is specifically to get the wavesrv LANG so waveshell |
| 325 | // on a remote uses the same LANG |
| 326 | return os.Getenv("LANG") |
| 327 | } |
| 328 | } |
| 329 | |
| 330 | func DetermineLang() string { |
| 331 | osLangOnce.Do(func() { |
no test coverage detected