【问题标题】:Yesod Julius Interpolation of MessagesYesod Julius 消息插值
【发布时间】:2013-10-22 13:48:40
【问题描述】:

我一直在使用 Yesod 的消息系统来帮助保持我的语言一致。例如,我有一条名为 MsgBrand 的消息,它可以毫无问题地插入到 Hamlet 文件中。但是,我现在正在使用需要此类信息的 JavaScript 库。

var tour = Tour.new();

tour.addSteps([
  { element: "#some-id",
    title:   "Some Title",
    content: "_{MsgTourStepFoo}"
  }
]);

但是,_{MsgTourStepFoo} 逐字出现在呈现的 JavaScript 代码中。换句话说,没有插值。这是正常的还是我错过了什么?

【问题讨论】:

    标签: yesod hamlet


    【解决方案1】:

    这是正常的。我们可以拥有 Julius 的 i18n 变体,但到目前为止一直避免使用它只是因为它看起来比它的价值更令人困惑。相反,您可以使用getMessageRender 获取消息呈现函数,然后从 Julius 调用它,例如:

    Haskell:
    messageRender <- getMessageRender
    
    Julius:
    content: "#{messageRender MsgTourStepFoo}"
    

    【讨论】:

    • 好的,我明白了。我觉得这有点令人惊讶。感谢迈克尔,感谢 Yesod 和您的帮助。 :)
    • 很好,但我收到了这个错误:Foundation.hs:85:26: No instance for (RenderMessage App message0) 由于使用 'getMessageRender' 类型变量 'message0' 不明确
    猜你喜欢
    • 2020-03-12
    • 2015-10-29
    • 2014-02-08
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2014-10-08
    相关资源
    最近更新 更多