Как сделать i18n и создать Windows Installer из программ на Haskell? - PullRequest
3 голосов
/ 16 февраля 2011

Я подумываю использовать Haskell для разработки небольшого коммерческого проекта. Программа должна быть интернационализирована (на упрощенный китайский, если быть точным), и мои клиенты требуют, чтобы она была доставлена ​​в форме установщика Windows одним щелчком мыши. Итак, в основном это две проблемы, с которыми я сталкиваюсь сейчас:

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

И вывод был такой:

terminal output

Это указывает на то, что gettext действительно работает, но по какой-то причине сгенерированный файл zh_CN.mo не работает (я думаю). Я уверен, что мой файл zh_CN.po кодируется в UTF-8. Кроме того, кроме использования System.IO.putStrLn, я также пытался System.IO.UTF8.putStrLn вывести строку, которая тоже не работала.

Ответы [ 2 ]

4 голосов
/ 16 февраля 2011

Для первого вопроса решение состоит в том, чтобы добавить decodeString из Codec.Binary.UTF8.String к функции gettext __, например:

__ :: String -> String
__ = decodeString . unsafePerformIO . getText

И тогда все работает просто отлично.

0 голосов
/ 16 февраля 2011

для первого вопроса, возможно ли, что вы не установили правильный шрифт или шрифт не настроен для использования в терминале.

...