MCPcopy Create free account
hub / github.com/wavetermdev/waveterm / determineLang

Function determineLang

pkg/wavebase/wavebase.go:302–328  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

300var osLang string
301
302func 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
330func DetermineLang() string {
331 osLangOnce.Do(func() {

Callers 1

DetermineLangFunction · 0.85

Calls 3

ContainsStrFunction · 0.92
listValidLangsFunction · 0.85
CombinedOutputMethod · 0.80

Tested by

no test coverage detected