【问题标题】:Yesod: i18n of custom form fields error messagesYesod:自定义表单字段错误消息的 i18n
【发布时间】:2014-10-08 01:36:08
【问题描述】:

我使用checkBool helper 来构建自定义表单字段,例如:

posDoubleField :: forall msg (m :: * -> *).
    ( RenderMessage (HandlerSite m) FormMessage
    , RenderMessage (HandlerSite m) msg, Monad m )
               => msg -> Field m Double
posDoubleField msg = checkBool (> 0) msg doubleField

-- ...
mkDepForm :: Form FormDepositHelper
mkDepForm = renderDivs $ FormDepositHelper
            <$> areq (posDoubleField errMsg) (fieldSettingsLabel MsgDepositAmount) (Just 0)
    where
       errMsg :: Text
       errMsg = "Invalid deposit amount!"

如你所见,我有国际化的字段标签,我也可以使用国际化的错误信息吗?还是我必须按照source code example 自己构建整个领域?

【问题讨论】:

  • 简单地使用 i18n 值代替 errMsg 是否行不通?所有类型似乎都适合这一点。
  • 太棒了!这行得通,但我不明白为什么,更准确地说它是如何工作的。
  • 我现在正在使用手机,所以无法详细回答。查看 RenderMessage 类型类的定义,它在 yesod 中提供了 i18n 的核心。书中还有一章是关于它的。
  • 我仍然在 Haskell 世界中“漂浮”,所以不幸的是,我阅读了更多我理解的内容 :( 实际上,在提出问题之前,我总是重读 Yesod 书和其他已知示例。非常感谢,你是非常愉快!我需要深入了解 Haskell 本身,尤其是 monad 转换器,因为据我了解 Yesod 通常是使用 monad 转换器构建的。
  • @MichaelSnoyman,您能否发布一个答案,以便我将问题标记为已回答,或者如果您太忙,我可以自己做。

标签: forms haskell internationalization messages yesod


【解决方案1】:

从上面转发评论:

简单地使用 i18n 值代替 errMsg 是否行不通?所有类型似乎都适合这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2011-10-30
    相关资源
    最近更新 更多