From 2fa247826f549d0cabf971fa2cfe5d4072fbcf60 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 21 Feb 2018 13:19:27 +0100 Subject: [PATCH] Add support for internationalization --- messages/de.msg | 2 ++ src/Foundation.hs | 19 ++++++++++++++----- src/Model/Types.hs | 4 ---- 3 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 messages/de.msg diff --git a/messages/de.msg b/messages/de.msg new file mode 100644 index 000000000..b23e13c99 --- /dev/null +++ b/messages/de.msg @@ -0,0 +1,2 @@ +SummerTerm year@Integer: Sommersemester #{tshow year} +WinterTerm year@Integer: Wintersemester #{tshow year}/#{tshow $ succ year} \ No newline at end of file diff --git a/src/Foundation.hs b/src/Foundation.hs index edd590f15..0bc8713fc 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -92,6 +92,20 @@ data MenuTypes -- | A convenient synonym for creating forms. type Form x = Html -> MForm (HandlerT UniWorX IO) (FormResult x, Widget) +mkMessage "UniWorX" "messages" "de" + +-- This instance is required to use forms. You can modify renderMessage to +-- achieve customized and internationalized form validation messages. +instance RenderMessage UniWorX FormMessage where + renderMessage _ _ = defaultFormMessage + +instance RenderMessage UniWorX TermIdentifier where + renderMessage foundation ls TermIdentifier{..} = case season of + Summer -> renderMessage' $ MsgSummerTerm year + Winter -> renderMessage' $ MsgWinterTerm year + where renderMessage' = renderMessage foundation ls + + -- Please see the documentation for the Yesod typeclass. There are a number -- of settings which can be configured by overriding methods here. instance Yesod UniWorX where @@ -421,11 +435,6 @@ isAuthenticated = do instance YesodAuthPersist UniWorX --- This instance is required to use forms. You can modify renderMessage to --- achieve customized and internationalized form validation messages. -instance RenderMessage UniWorX FormMessage where - renderMessage _ _ = defaultFormMessage - -- Useful when writing code that is re-usable outside of the Handler context. -- An example is background jobs that send email. -- This can also be useful for writing code that works across multiple Yesod applications. diff --git a/src/Model/Types.hs b/src/Model/Types.hs index 1a389cd44..23bf23a57 100644 --- a/src/Model/Types.hs +++ b/src/Model/Types.hs @@ -25,7 +25,6 @@ import Data.Text (Text) import qualified Data.Text as Text import Text.Read (readMaybe) -import Text.Shakespeare.I18N -- import Data.CaseInsensitive (CI) import qualified Data.CaseInsensitive as CI @@ -133,9 +132,6 @@ instance ToJSON TermIdentifier where instance FromJSON TermIdentifier where parseJSON = withText "Term" $ either (fail . Text.unpack) return . termFromText -instance RenderMessage site TermIdentifier where -- TODO: I18N - renderMessage _ _ = termToText - {- Must be defined in a later module: termField :: Field (HandlerT UniWorX IO) TermIdentifier termField = checkMMap (return . termFromText) termToText textField