是否可以在Yesod的翻译文件中包含多行消息?

时间:2018-01-10 20:47:30

标签: haskell internationalization yesod

我按照以下链接中的指示在Yesod脚手架应用程序中执行i18n:https://github.com/yesodweb/yesod/wiki/i18n-messages-in-the-scaffoldinghttps://www.yesodweb.com/book/internationalizationhttp://haddock.stackage.org/nightly-2016-04-19/shakespeare-2.0.8.1/Text-Shakespeare-I18N.html

它看起来像en.msg文件,如:

Hello: Hello World!
MultilineText: 
  line 1.
  line 2.
  etc...
SingleLine: A single line message.
由于 MultilineText 定义,因此不支持

。这是真的还是有方法/语法来做到这一点?

1 个答案:

答案 0 :(得分:2)

从消息来源判断,不,这是不可能的:

loadLangFile :: FilePath -> IO [Def]
loadLangFile file = do
    bs <- S.readFile file
    let s = unpack $ decodeUtf8 bs
    defs <- fmap catMaybes $ mapM (parseDef . T.unpack . T.strip . T.pack) $ lines s
    return defs

parseDef函数对lines调用的结果进行操作,该函数按换行符分割文件内容。