如何在Haskell文件中使用翻译后的消息?
我在互联网上搜索过,在Yesod网络电子书和其他教程()中也搜索过,但我还不能澄清这个问题。我在用脚手架搭建的场地 我有一个处理程序,里面返回一个值,如果用户通过身份验证,则返回电子邮件,如果用户未通过身份验证,则返回字符串。我想要的是返回本地化消息,而不是字符串“(未知用户ID)”。我的问题是使用消息文件(例如MsgHello)中的值,如果我这样做,它将返回如下错误: 无法将预期类型如何在Haskell文件中使用翻译后的消息?,haskell,internationalization,yesod,Haskell,Internationalization,Yesod,我在互联网上搜索过,在Yesod网络电子书和其他教程()中也搜索过,但我还不能澄清这个问题。我在用脚手架搭建的场地 我有一个处理程序,里面返回一个值,如果用户通过身份验证,则返回电子邮件,如果用户未通过身份验证,则返回字符串。我想要的是返回本地化消息,而不是字符串“(未知用户ID)”。我的问题是使用消息文件(例如MsgHello)中的值,如果我这样做,它将返回如下错误: 无法将预期类型AppMessage'与实际类型匹配 我试过使用(show MsgHello)或(pack MsgHello),
AppMessage'与实际类型匹配
我试过使用(show MsgHello)或(pack MsgHello),甚至打电话给msg userEmail u
默认布局$do
setTitleI MsgUserProfile
$(widgetFile“nhUserProfile”)
我对I18N
模块的理解是,您希望获取您的AppMessage
值并在其上使用
您需要传入指定翻译类型的类型、语言列表以及消息。翻译类型是使用该函数创建的,语言列表类似于
[“en-US”,“en-GB”,“fr”]
感谢Tickhon Jelvis指出这些网页,我还发现了这一个:在那里我能够找到问题的解决方案
因此,如果我想使用本地化消息,我会:
getUserProfileR :: Handler RepHtml
getUserProfileR = do
maid <- maybeAuth
msg <- getRenderMessage
let user = case maid of
Nothing -> msg MsgNoUser --"(Unknown User ID)"
Just (Entity _ u) -> userEmail u
defaultLayout $ do
setTitleI MsgUserProfile
$(widgetFile "nhUserProfile")
getUserProfileR::Handler RepHtml
getUserProfileR=do
女佣用户电子邮件
默认布局$do
setTitleI MsgUserProfile
$(widgetFile“nhUserProfile”)
还请记住,有一个助手函数“setTitleI”,它直接获取一个Msg值,并避免使用“Msg MsgThisPageTitle”
getUserProfileR :: Handler RepHtml
getUserProfileR = do
maid <- maybeAuth
msg <- getRenderMessage
let user = case maid of
Nothing -> msg MsgNoUser --"(Unknown User ID)"
Just (Entity _ u) -> userEmail u
defaultLayout $ do
setTitleI MsgUserProfile
$(widgetFile "nhUserProfile")