module Hails.I18N.Language where
import qualified Control.Exception as E
import Control.Exception.Extra
import Control.Monad
import System.Directory
import System.FilePath
import System.Locale.SetLocale
import System.Environment.SetEnv
import Text.I18N.GetText
installLanguage :: String -> IO ()
installLanguage app = void $ do
dir <- getAppUserDataDirectory app
let file = dir </> "default-language"
lang <- E.handle (anyway (return "")) $ do
cs <- fmap lines $ readFile file
return $ if null cs then "" else head cs
unless (null lang) $ E.handle (anyway (return ())) $ do
setLocale LC_ALL (Just lang)
setEnv "LANGUAGE" lang
bindTextDomain app $ Just "."
textDomain $ Just app