feat(messages): mkMessageAddition
This commit is contained in:
parent
bb877eb813
commit
ea33d844cc
@ -1,5 +1,3 @@
|
|||||||
PrintDebugForStupid name@Text: Debug message "#{name}"
|
|
||||||
|
|
||||||
Logo: Uni2work
|
Logo: Uni2work
|
||||||
|
|
||||||
BtnSubmit: Senden
|
BtnSubmit: Senden
|
||||||
@ -1,5 +1,3 @@
|
|||||||
PrintDebugForStupid name: Debug message "#{name}"
|
|
||||||
|
|
||||||
Logo: Uni2work
|
Logo: Uni2work
|
||||||
|
|
||||||
BtnSubmit: Submit
|
BtnSubmit: Submit
|
||||||
1
messages/uniworx/test/de-de-formal.msg
Normal file
1
messages/uniworx/test/de-de-formal.msg
Normal file
@ -0,0 +1 @@
|
|||||||
|
PrintDebugForStupid name@Text: Debug message "#{name}"
|
||||||
1
messages/uniworx/test/en-eu.msg
Normal file
1
messages/uniworx/test/en-eu.msg
Normal file
@ -0,0 +1 @@
|
|||||||
|
PrintDebugForStupid name: Debug message "#{name}"
|
||||||
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
module Foundation.I18n
|
module Foundation.I18n
|
||||||
( appLanguages, appLanguagesOpts
|
( appLanguages, appLanguagesOpts
|
||||||
, UniWorXMessage(..)
|
, UniWorXMessage(..), UniWorXTestMessage(..)
|
||||||
, ShortTermIdentifier(..)
|
, ShortTermIdentifier(..)
|
||||||
, MsgLanguage(..)
|
, MsgLanguage(..)
|
||||||
, ShortSex(..)
|
, ShortSex(..)
|
||||||
@ -20,11 +20,11 @@ module Foundation.I18n
|
|||||||
, UniWorXMessages(..)
|
, UniWorXMessages(..)
|
||||||
, uniworxMessages
|
, uniworxMessages
|
||||||
, unRenderMessage, unRenderMessage', unRenderMessageLenient
|
, unRenderMessage, unRenderMessage', unRenderMessageLenient
|
||||||
|
, module Foundation.I18n.TH
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Foundation.Type
|
import Foundation.Type
|
||||||
|
|
||||||
|
|
||||||
import Import.NoFoundation
|
import Import.NoFoundation
|
||||||
|
|
||||||
import Auth.LDAP
|
import Auth.LDAP
|
||||||
@ -131,12 +131,13 @@ maybeToMessage _ Nothing _ = mempty
|
|||||||
maybeToMessage before (Just x) after = before <> toMessage x <> after
|
maybeToMessage before (Just x) after = before <> toMessage x <> after
|
||||||
|
|
||||||
-- Messages creates type UniWorXMessage and RenderMessage UniWorX instance
|
-- Messages creates type UniWorXMessage and RenderMessage UniWorX instance
|
||||||
mkMessage ''UniWorX "messages/uniworx" "de-de-formal"
|
mkMessage ''UniWorX "messages/uniworx/misc" "de-de-formal"
|
||||||
mkMessageVariant "UniWorX" "Campus" "messages/campus" "de"
|
mkMessageAddition ''UniWorX "Test" "messages/uniworx/test" "de-de-formal"
|
||||||
mkMessageVariant "UniWorX" "Dummy" "messages/dummy" "de"
|
mkMessageVariant ''UniWorX ''CampusMessage "messages/campus" "de"
|
||||||
mkMessageVariant "UniWorX" "PWHash" "messages/pw-hash" "de"
|
mkMessageVariant ''UniWorX ''DummyMessage "messages/dummy" "de"
|
||||||
mkMessageVariant "UniWorX" "Button" "messages/button" "de"
|
mkMessageVariant ''UniWorX ''PWHashMessage "messages/pw-hash" "de"
|
||||||
mkMessageVariant "UniWorX" "Frontend" "messages/frontend" "de-de-formal"
|
mkMessageVariant ''UniWorX ''ButtonMessage "messages/button" "de"
|
||||||
|
mkMessageVariant ''UniWorX ''FrontendMessage "messages/frontend" "de-de-formal"
|
||||||
|
|
||||||
instance RenderMessage UniWorX TermIdentifier where
|
instance RenderMessage UniWorX TermIdentifier where
|
||||||
renderMessage foundation ls TermIdentifier{..} = case season of
|
renderMessage foundation ls TermIdentifier{..} = case season of
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{-# LANGUAGE UndecidableInstances #-}
|
{-# LANGUAGE UndecidableInstances #-}
|
||||||
|
|
||||||
module Foundation.I18n.TH
|
module Foundation.I18n.TH
|
||||||
( mkMessage
|
( mkMessage, mkMessageFor, mkMessageVariant, mkMessageAddition
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Import.NoFoundation
|
import Import.NoFoundation
|
||||||
@ -113,17 +113,37 @@ mkMessage :: TH.Name -- ^ Foundation type
|
|||||||
-> FilePath -- ^ Base directory of translation files
|
-> FilePath -- ^ Base directory of translation files
|
||||||
-> Lang -- ^ Default translation language
|
-> Lang -- ^ Default translation language
|
||||||
-> TH.DecsQ
|
-> TH.DecsQ
|
||||||
mkMessage dt folder lang = mkMessageCommon True "Msg" "Message" dt (TH.nameBase dt) folder lang
|
mkMessage dt folder lang = mkMessageCommon True "Msg" dt (TH.mkName $ TH.nameBase dt <> "Message") folder lang
|
||||||
|
|
||||||
|
mkMessageFor :: TH.Name -- ^ Foundation type
|
||||||
|
-> TH.Name -- ^ Existing type to add translations for
|
||||||
|
-> FilePath -- ^ Base directory of translation files
|
||||||
|
-> Lang -- ^ Default translation language
|
||||||
|
-> TH.DecsQ
|
||||||
|
mkMessageFor master dt folder lang = mkMessageCommon False "" master dt folder lang
|
||||||
|
|
||||||
|
mkMessageVariant :: TH.Name -- ^ Foundation type
|
||||||
|
-> TH.Name -- ^ Existing type to add translations for
|
||||||
|
-> FilePath -- ^ Base directory of translation files
|
||||||
|
-> Lang -- ^ Default translation language
|
||||||
|
-> TH.DecsQ
|
||||||
|
mkMessageVariant master dt folder lang = mkMessageCommon False "Msg" master dt folder lang
|
||||||
|
|
||||||
|
mkMessageAddition :: TH.Name -- ^ Foundation type
|
||||||
|
-> String -- ^ Qualifier to insert into name of message type
|
||||||
|
-> FilePath -- ^ Base directory of translation files
|
||||||
|
-> Lang -- ^ Default translation language
|
||||||
|
-> TH.DecsQ
|
||||||
|
mkMessageAddition master dt folder lang = mkMessageCommon True "Msg" master (TH.mkName $ TH.nameBase master <> dt <> "Message") folder lang
|
||||||
|
|
||||||
mkMessageCommon :: Bool -- ^ Generate new datatype
|
mkMessageCommon :: Bool -- ^ Generate new datatype
|
||||||
-> String -- ^ String to prepend to constructor names
|
-> String -- ^ String to prepend to constructor names
|
||||||
-> String -- ^ String to append to datatype name
|
|
||||||
-> TH.Name -- ^ Name of master datatype
|
-> TH.Name -- ^ Name of master datatype
|
||||||
-> String -- ^ Basename of translation datatype
|
-> TH.Name -- ^ Name of translation datatype
|
||||||
-> FilePath -- ^ Base directory of translation files
|
-> FilePath -- ^ Base directory of translation files
|
||||||
-> Lang -- ^ Default translation language
|
-> Lang -- ^ Default translation language
|
||||||
-> TH.DecsQ
|
-> TH.DecsQ
|
||||||
mkMessageCommon genType prefix postfix master dt folder defLang = do
|
mkMessageCommon genType prefix master datName folder defLang = do
|
||||||
files <- fmap DirTree.zipPaths . liftIO $ DirTree.readDirectoryWith (runExceptT . parseMsgFile) folder
|
files <- fmap DirTree.zipPaths . liftIO $ DirTree.readDirectoryWith (runExceptT . parseMsgFile) folder
|
||||||
forMOf_ (folded . _1) files TH.addDependentFile
|
forMOf_ (folded . _1) files TH.addDependentFile
|
||||||
|
|
||||||
@ -153,7 +173,6 @@ mkMessageCommon genType prefix postfix master dt folder defLang = do
|
|||||||
unless (null extraDefns) . fail $ "Extraneous message definitions:\n" <> indent 2 (unlines extraDefnsErrs)
|
unless (null extraDefns) . fail $ "Extraneous message definitions:\n" <> indent 2 (unlines extraDefnsErrs)
|
||||||
|
|
||||||
let defnName defn = TH.mkName $ prefix <> defn
|
let defnName defn = TH.mkName $ prefix <> defn
|
||||||
datName = TH.mkName $ dt <> postfix
|
|
||||||
|
|
||||||
execWriterT @_ @[TH.Dec] $ do
|
execWriterT @_ @[TH.Dec] $ do
|
||||||
when genType $ do
|
when genType $ do
|
||||||
|
|||||||
@ -233,3 +233,5 @@ postAdminTestR = do
|
|||||||
<h2>_{MsgTestDownload}
|
<h2>_{MsgTestDownload}
|
||||||
^{testDownloadWidget}
|
^{testDownloadWidget}
|
||||||
|]
|
|]
|
||||||
|
|
||||||
|
i18n $ MsgPrintDebugForStupid "DebugForStupid"
|
||||||
|
|||||||
@ -104,7 +104,7 @@ getGlossaryR =
|
|||||||
|
|
||||||
|
|
||||||
mkI18nWidgetEnum "FAQ" "faq"
|
mkI18nWidgetEnum "FAQ" "faq"
|
||||||
mkMessageFor "UniWorX" "FAQItem" "messages/faq" "de-de-formal"
|
mkMessageFor ''UniWorX ''FAQItem "messages/faq" "de-de-formal"
|
||||||
|
|
||||||
faqsWidget :: ( MonadHandler m, HandlerSite m ~ UniWorX
|
faqsWidget :: ( MonadHandler m, HandlerSite m ~ UniWorX
|
||||||
, MonadThrow m
|
, MonadThrow m
|
||||||
|
|||||||
@ -22,7 +22,7 @@ import ClassyPrelude.Yesod as Import
|
|||||||
, sinkFile, sourceFile
|
, sinkFile, sourceFile
|
||||||
, defaultYesodMiddleware
|
, defaultYesodMiddleware
|
||||||
, authorizationCheck
|
, authorizationCheck
|
||||||
, mkMessage
|
, mkMessage, mkMessageFor, mkMessageVariant
|
||||||
)
|
)
|
||||||
|
|
||||||
import UnliftIO.Async.Utils as Import
|
import UnliftIO.Async.Utils as Import
|
||||||
|
|||||||
Reference in New Issue
Block a user