UTF-8 i18n文件

时间:2013-09-10 12:56:00

标签: internationalization yesod

我正在尝试将一个中文本地化添加到一个脚手架的Yesod网站。我在Windows中使用记事本将zh.msg消息文件保存为UTF-8格式,但是当我在项目目录中运行cabal install时,我得到了这个:

Handler\Home.hs:15:11:
    Not in scope: data constructor `MsgHello'
    Perhaps you meant `Msg<stderr>: hPutChar: invalid argument (invalid character)

有问题的线是我渲染主页的地方:

$(widgetFile "homepage")

我将两个消息文件都更改为Unicode格式而不是UTF-8,并改为收到此消息:

Foundation.hs:1:1:
    Exception when trying to run compile-time code:
    Cannot decode byte '\xff': Data.Text.Encoding.Fusion.streamUtf8: invalid UTF-8 stream

所以我猜UTF-8就是这样......不知何故。

(我正在使用记事本,因为我没有设置gVim来渲染Unicode字符。这显然有点壮观。)

1 个答案:

答案 0 :(得分:0)

当我去改变时,我发现了这个问题。我的英文文件的差异如下所示:

-Hello: Hello
+<U+FEFF>Hello: Hello

我猜记事本添加了字符,它正在进入Haskell代码。我用vim according to this answer解决了它。