packages feed

yesod-0.0.0: examples/i18n.hs

{-# LANGUAGE QuasiQuotes #-}
import Yesod
import Network.Wai.Handler.SimpleServer

data I18N = I18N

instance Yesod I18N where
    resources = [$mkResources|
/:
    Get: homepage
/set/$lang:
    Get: setLang
|]

homepage :: Handler y [(ContentType, Content)]
homepage = do
    ls <- languages
    let hello = chooseHello ls
    return [(TypePlain, cs hello :: Content)]

chooseHello :: [Language] -> String
chooseHello [] = "Hello"
chooseHello ("he":_) = "שלום"
chooseHello ("es":_) = "Hola"
chooseHello (_:rest) = chooseHello rest

setLang :: String -> Handler y ()
setLang lang = do
    addCookie 1 langKey lang
    redirect RedirectTemporary "/"

main :: IO ()
main = putStrLn "Running..." >> toWaiApp I18N >>= run 3000