Internationalization UTF-8 i18n文件
我试图在搭建的Yesod网站上添加一个中文本地化。我在Windows中使用记事本将Internationalization UTF-8 i18n文件,internationalization,yesod,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 charac
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)
我将这两个消息文件更改为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字符。这显然有点了不起。)当我去提交我的更改时,我发现了这个问题。我的英文文件的差异如下所示:
-Hello: Hello
+<U+FEFF>Hello: Hello
-你好:你好
+你好:你好
我猜记事本把这个字符加进去了,然后它就进入了Haskell代码。我用vim解决了这个问题
-Hello: Hello
+<U+FEFF>Hello: Hello