代码之家  ›  专栏  ›  技术社区  ›  Fábio Roberto Teodoro

Yesod的翻译文件中是否可能有多行消息?

  •  1
  • Fábio Roberto Teodoro  · 技术社区  · 7 年前

    我正在按照以下链接的指示,在Yesod脚手架应用程序中执行i18n: https://github.com/yesodweb/yesod/wiki/i18n-messages-in-the-scaffolding , https://www.yesodweb.com/book/internationalization http://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.
    

    不支持,因为 多行文字 释义这是真的还是有一种方法/语法可以做到这一点?

    1 回复  |  直到 7 年前
        1
  •  2
  •   arrowd    7 年前

    从消息来源来看,不,不可能:

    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 调用,它按换行符拆分文件内容。