Я подумываю использовать Haskell для разработки небольшого коммерческого проекта. Программа должна быть интернационализирована (на упрощенный китайский, если быть точным), и мои клиенты требуют, чтобы она была доставлена в форме установщика Windows одним щелчком мыши. Итак, в основном это две проблемы, с которыми я сталкиваюсь сейчас:
- I18n программ на Haskell: метод, описанный в Интернационализация программ на Haskell сработало (частично), если я изменил команду выполнения программы с
LOCALE=zh_CN.UTF-8 ./Main
на LANG=zh_CN.UTF-8 ./Main
(я работаю над Ubuntu 10.10), однако, китайский вывод искажен, и я понятия не имею, почему это так.
- Распространение в Windows: я привык работать под Linux и собирать и упаковывать свои программы на Haskell с использованием Cabal, но каков наиболее естественный способ создания установщика Windows одним щелчком мыши из кабельного пакета Haskell? Является ли пакет 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
вывести строку, которая тоже не работала.