首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hamlet文件和18N

Hamlet文件和18N
EN

Stack Overflow用户
提问于 2012-06-02 00:58:08
回答 1查看 305关注 0票数 3

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

代码语言:javascript
复制
ihamletToRepHtml $(ihamletFile "templates/default-layout-wrapper.hamlet")

但我得到以下错误:

代码语言:javascript
复制
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]

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

代码语言:javascript
复制
    pc <- widgetToPageContent $ do
        $(widgetFile "normalize")
        addStylesheet $ StaticR css_bootstrap_css
        $(widgetFile "default-layout")

因此,看起来我需要调整pc创建代码或hamlet模板中的调用代码(例如<title>#{pageTitle pc}的代码),但我不知道如何调整,并且浏览了API文档、各种教程和博客帖子都没有给我答案(它可能在那里,但我错过了它)。

有什么想法吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-03 05:13:35

我认为你可以像这样定义一个函数:

代码语言:javascript
复制
toHtmlUrlI hu _msgRender urlRender = hu urlRender

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

代码语言:javascript
复制
^{toHtmlUrlI $ pageHead pc}

由于您使用的是ihamlet,因此嵌入的模板应该是这样的:

代码语言:javascript
复制
type HtmlUrlI18n msg url = Translate msg -> Render url -> Html

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

代码语言:javascript
复制
type HtmlUrl url = Render url -> Html

因此您必须忽略Translate msg参数。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10854467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档