【发布时间】:2011-06-28 01:36:00
【问题描述】:
我正在考虑使用 Haskell 来开发一个小型商业项目。该程序必须是国际化的(具体来说是简体中文),我的客户要求它应该以一键式 Windows Installer 形式交付。所以基本上这是我现在面临的两个问题:
- Haskell 程序的 I18n:如果我将执行程序的命令从
LOCALE=zh_CN.UTF-8 ./Main更改为LANG=zh_CN.UTF-8 ./Main(我正在使用 Ubuntu 10.10),Internationalization of Haskell programs 中描述的方法确实有效(部分),但是,中文输出是乱码,不知道是什么原因。 - Windows 上的分发:我习惯在 Linux 下工作并使用 Cabal 构建和打包我的 Haskell 程序,但是从 cabalized Haskell 包创建一键式 Windows 安装程序的最自然方法是什么?包裹bamse 是正确的方式吗?
------第一个问题的细节------
我所做的是:
$ hgettext -k __ -o messages.pot Main.hs
$ msginit --input=messages.pot --locale=zh_CN.UTF-8
(Edit the zh_CN.po file, adding Chinese translation)
$ mkdir -p zh_CN/LC_MESSAGES
$ msgfmt --output-file=zh_CN/LC_MESSAGES/hello.mo zh_CN.po
$ ghc --make Main.hs
$ LANG=zh_CN.UTF-8 ./Main
输出是这样的:
这表明 gettext 确实在工作,但由于某种原因,生成的 zh_CN.mo 文件已损坏(我的猜测)。我很确定我的 zh_CN.po 文件是用 UTF-8 编码的。另外,除了使用System.IO.putStrLn之外,我还尝试了System.IO.UTF8.putStrLn输出字符串,也没有用。
【问题讨论】:
-
你好。我什至不知道 bamse 的存在......
标签: haskell internationalization software-distribution