The snap-language package

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

Warnings:

Language handling for Snap.

Support for determining the client's prefered language using the Accept-Language header or using suffixes to the requested URI.


[Skip to ReadMe]

Properties

Versions0.1.0.0, 0.1.0.1, 0.1.0.1, 0.1.0.2
Change logCHANGELOG.md
Dependenciesattoparsec (>=0.13.0.1 && <0.14), base (==4.8.*), bytestring (>=0.10.6.0 && <0.11), containers (>=0.5.6.2 && <0.6), snap-core (>=0.9.8.0 && <1.1) [details]
LicenseBSD3
AuthorPetter Bergman
Maintainerjon.petter.bergman@gmail.com
CategoryWeb
Home pagehttps://github.com/jonpetterbergman/snap-accept-language
Bug trackerhttps://github.com/jonpetterbergman/snap-accept-language/issues
Source repositoryhead: git clone http://github.com/jonpetterbergman/snap-accept-language
this: git clone http://github.com/jonpetterbergman/snap-accept-language(tag v0.1.0.1)
UploadedTue Aug 9 06:20:56 UTC 2016 by petterb

Modules

Downloads

Maintainers' corner

For package maintainers and hackage trustees


Readme for snap-language-0.1.0.1

[back to package description]

snap-language

Language handling for Snap.

Support for determining the client's prefered language using the Accept-Language header or using suffixes to the requested URI.

Try this example:

{-# LANGUAGE OverloadedStrings #-}

module Simple where

import Snap.Http.Server
import Snap.Core
import Data.Map
import Control.Applicative

import Snap.Language

data Lang = SV | EN deriving Eq

table :: RangeMapping Lang
table = fromList [("sv-SE",SV),("en-GB",EN)]

getLanguage :: Snap Lang
getLanguage = 
  getSuffixLanguage table <|> 
  getAcceptLanguage table <|> 
  return EN

test :: IO ()
test = quickHttpServe $ do
  lang <- getLanguage
  dir "hello" $ handler lang

handler :: Lang -> Snap ()
handler EN = writeBS "hello"
handler SV = writeBS "hej"

You can now access /hello and you will get an answer depending on your Accept-Language header.

Or you can access /hello.en-GB or /hello.sv-SE directly.