// +build darwin freebsd linux netbsd openbsd

package jibber_jabber

import (
	"errors"
	"os"
	"strings"
)

func getLangFromEnv() (locale string) {
	locale = os.Getenv("LC_ALL")
	if locale == "" {
		locale = os.Getenv("LANG")
	}
	return
}

func getUnixLocale() (unix_locale string, err error) {
	unix_locale = getLangFromEnv()
	if unix_locale == "" {
		err = errors.New(COULD_NOT_DETECT_PACKAGE_ERROR_MESSAGE)
	}

	return
}

func DetectIETF() (locale string, err error) {
	unix_locale, err := getUnixLocale()
	if err == nil {
		language, territory := splitLocale(unix_locale)
		locale = language
		if territory != "" {
			locale = strings.Join([]string{language, territory}, "-")
		}
	}

	return
}

func DetectLanguage() (language string, err error) {
	unix_locale, err := getUnixLocale()
	if err == nil {
		language, _ = splitLocale(unix_locale)
	}

	return
}

func DetectTerritory() (territory string, err error) {
	unix_locale, err := getUnixLocale()
	if err == nil {
		_, territory = splitLocale(unix_locale)
	}

	return
}