module Simple.Locale.Languages (
LANG (..),
getSystemLanguage
) where
#ifdef WINDOWS
import System.Win32.NLS
#else
import System.Environment
#endif
import System.IO.Unsafe
data LANG = LANG_UNKNOWN
| LANG_PL
deriving Int -> LANG -> ShowS
[LANG] -> ShowS
LANG -> String
(Int -> LANG -> ShowS)
-> (LANG -> String) -> ([LANG] -> ShowS) -> Show LANG
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LANG] -> ShowS
$cshowList :: [LANG] -> ShowS
show :: LANG -> String
$cshow :: LANG -> String
showsPrec :: Int -> LANG -> ShowS
$cshowsPrec :: Int -> LANG -> ShowS
Show
#ifdef WINDOWS
detectLanguage :: IO LANG
detectLanguage = do
let lang = getUserDefaultLCID
case lang of
1045 -> return LANG_PL
_ -> return LANG_UNKNOWN
#else
detectLanguage :: IO LANG
detectLanguage :: IO LANG
detectLanguage = do
String
lang <- String -> IO String
getEnv String
"LANG"
case String
lang of
Char
'p':Char
'l':Char
'_':Char
'P':Char
'L':String
_ -> LANG -> IO LANG
forall (m :: * -> *) a. Monad m => a -> m a
return LANG
LANG_PL
String
_ -> LANG -> IO LANG
forall (m :: * -> *) a. Monad m => a -> m a
return LANG
LANG_UNKNOWN
#endif
{-# NOINLINE getSystemLanguage #-}
getSystemLanguage :: LANG
getSystemLanguage :: LANG
getSystemLanguage = IO LANG -> LANG
forall a. IO a -> a
unsafePerformIO IO LANG
detectLanguage