From dac53a214cc96961ed6615112d6a8fe35fc6f345 Mon Sep 17 00:00:00 2001 From: "Haisheng.W.WU" Date: Sat, 29 Dec 2012 00:19:19 -0500 Subject: [PATCH] use snaplet file path --- .../{data => snaplets/i18n}/message-en_US.cfg | 0 .../{data => snaplets/i18n}/message-zh_CN.cfg | 0 snaplet-i18n.cabal | 12 ++++++++---- src/Snap/Snaplet/I18N.hs | 18 ++++++++++-------- 4 files changed, 18 insertions(+), 12 deletions(-) rename example/{data => snaplets/i18n}/message-en_US.cfg (100%) rename example/{data => snaplets/i18n}/message-zh_CN.cfg (100%) diff --git a/example/data/message-en_US.cfg b/example/snaplets/i18n/message-en_US.cfg similarity index 100% rename from example/data/message-en_US.cfg rename to example/snaplets/i18n/message-en_US.cfg diff --git a/example/data/message-zh_CN.cfg b/example/snaplets/i18n/message-zh_CN.cfg similarity index 100% rename from example/data/message-zh_CN.cfg rename to example/snaplets/i18n/message-zh_CN.cfg diff --git a/snaplet-i18n.cabal b/snaplet-i18n.cabal index ee7be2e..977391c 100644 --- a/snaplet-i18n.cabal +++ b/snaplet-i18n.cabal @@ -33,12 +33,16 @@ Library Exposed-modules: Snap.Snaplet.I18N + Other-modules: Paths_snaplet_i18n + Build-Depends: base >= 4 && < 5, - snap >= 0.9.1 && < 0.10, - snap-core == 0.9.0, - xmlhtml == 0.2.0, - heist == 0.8.1, + snap == 0.9.*, + snap-core == 0.9.*, + snap-loader-dynamic == 0.9.*, + snap-loader-static == 0.9.*, + xmlhtml >= 0.2, + heist >= 0.8.1 && < 0.9, bytestring >= 0.9 && < 1.0, data-lens-template >= 2.1 && < 2.2, data-lens >= 2.0 && < 2.1, diff --git a/src/Snap/Snaplet/I18N.hs b/src/Snap/Snaplet/I18N.hs index 9a37557..10b4059 100644 --- a/src/Snap/Snaplet/I18N.hs +++ b/src/Snap/Snaplet/I18N.hs @@ -16,12 +16,12 @@ import qualified Data.Configurator.Types as Config import Data.Lens.Common import Data.Maybe import qualified Data.Text as T -import System.Directory import System.FilePath.Posix import Text.Templating.Heist import Text.XmlHtml hiding (render) import qualified Text.XmlHtml as X +import Paths_snaplet_i18n import Snap import Snap.Snaplet.Heist @@ -39,7 +39,7 @@ defaultLocale = "en_US" -- | ?? could be multiple message files -- defaultMessageFilePrefix :: MessageFile -defaultMessageFilePrefix = "data/message" +defaultMessageFilePrefix = "message" data I18NConfig = I18NConfig { _getLocale :: Locale -- ^ locale, default "en" @@ -90,13 +90,17 @@ lookupI18NValue key = do initI18NSnaplet :: (HasHeist b, HasI18N b) => Maybe Locale -- ^ Locale, default to @defaultLocale@ -> SnapletInit b I18NSnaplet -initI18NSnaplet l = makeSnaplet "I18NSnaplet" "" Nothing $ do +initI18NSnaplet l = makeSnaplet "i18n" description datadir $ do let i18nConfig = I18NConfig (fromMaybe defaultLocale l) defaultMessageFilePrefix - msg <- liftIO $ readMessageFile i18nConfig + fp <- getSnapletFilePath + msg <- liftIO $ readMessageFile fp i18nConfig addDefaultSplices return $ I18NSnaplet i18nConfig msg where addDefaultSplices = addSplices [ ("i18n", liftHeist i18nSplice) , ("i18nSpan", liftHeist i18nSpanSplice)] + -- config dir for snaplet + datadir = Just $ liftM (++ "/resources") getDataDir + description = "light weight i18n snaplet" ------------------------------------------------------- -- @@ -105,10 +109,8 @@ initI18NSnaplet l = makeSnaplet "I18NSnaplet" "" Nothing $ do -- server will not be able to start up if dir doesnt exists. -- Thus, no additional validation check so far. -- -readMessageFile :: I18NConfig -> IO I18NMessage - --IO Config.Config -readMessageFile config = do - base <- getCurrentDirectory +readMessageFile :: FilePath -> I18NConfig -> IO I18NMessage +readMessageFile base config = do let fullname = base file config fmap I18NMessage (Config.load [Config.Required fullname]) where