gpt4 book ai didi

yesod - 哈姆雷特文件和 18N

转载 作者:行者123 更新时间:2023-12-02 02:15:35 25 4
gpt4 key购买 nike

我在调整生成的站点 (yesod init) 以使用 I18N 时遇到问题。具体来说,我试图在生成的 default-layout-wrapper.hamlet 文件中使用本地化字符串,使用 _{Msg...} .我已将 Foundation.hs 更改为:

ihamletToRepHtml $(ihamletFile "templates/default-layout-wrapper.hamlet")

但是我得到以下错误:

The function `pageHead' is applied to three arguments,
but its type `PageContent url0 -> HtmlUrl url0' has only two
In a stmt of a 'do' expression:
pageHead pc _mrender[a522] _urender[a521]

我还没有触及页面内容创建,上面写着:

    pc <- widgetToPageContent $ do
$(widgetFile "normalize")
addStylesheet $ StaticR css_bootstrap_css
$(widgetFile "default-layout")

所以看起来我需要调整 hamlet 模板中的 pc 创建代码或调用代码(例如说 <title>#{pageTitle pc} 的代码),但我不知道如何,并且通过 API 文档和各种教程和博客文章都没有给我答案(可能有,但我错过了)。

有什么想法吗?谢谢!

最佳答案

我想你可以定义一个像这样的函数:

toHtmlUrlI hu _msgRender urlRender = hu urlRender

然后在 default-layout-wrapper.hamlet 中,将 pageHead 的嵌入替换为:

^{toHtmlUrlI $ pageHead pc}

发生的事情是,由于您使用的是 ihamlet,因此嵌入式模板应为以下类型:

type HtmlUrlI18n msg url = Translate msg -> Render url -> Html

然而,pageHead pc实际上是这样的类型:

type HtmlUrl url = Render url -> Html

所以你必须忽略那个Translate msg参数。

顺便说一下,我认为您可以使用 const 代替 toHtmlUrlI,但我发现后者更清晰一些。

关于yesod - 哈姆雷特文件和 18N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10854467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com