
Hi all. I want a handler to render different templates for different languages. I have getCurrentLanguage function and now I try to do something like: getRootR = do currentLanguage <- getCurrentLanguage defaultLayout $ do addWidget $(widgetFile $ currentLanguage ++ "/homepage") This results in: GHC stage restriction: `currentLanguage' is used in a top-level splice or annotation, and must be imported, not defined locally This makes sense to me, because TH is calculated at compile time. I would like to hear ideas how to work around this restriction. Perhaps there is an existing solution in Yesod? At the moment, the best I could think of is smth like this: getRootR = do currentLanguage <- getCurrentLanguage defaultLayout $ do case currentLanguage of "en" -> addWidget $(widgetFile "en/homepage") ... and so on for each language ... Obviously, this is not a solution taking in account that there are many languages and many handlers. I was considering creating a global (template file name -> rendered template) map. But I am not sure this is really feasible. Regards, Dmitry