xgettextで「非アスキー文字列」エラーが出る場合の対処方法

whotwi - グラフィカルTwitter分析の英語版をつくるべく、定番のgettextで多言語対応することに。

PHPでgettextを使う方法については以下などを見てやってみました。

僕の場合英語があんまできないし、たぶん英語版しか作らないし、翻訳者も俺なので、msgidを日本語にしてしまいましたw
いちいちmsgidの英語考えるの面倒だしw俺日本人だしww

というわけでmsgidを日本語にしてxgettextすると

$ xgettext -f gettext.txt -k__
xgettext: index.php:26 に非 ASCII 文字列.
--from-code で入力エンコーディングを指定してください.

あちゃー。 gettext.txtは対象ファイルのファイル名を改行区切りで入れたテキストファイルです。
そこで前で上げたサイトや他のサイトにも

    • from-code=utf8

とあるので追加するもなぜかエラーが消えない。そこで

としたらエラーが消えました。そんだけです。
こういうところでハマるから怖い。


今回はたまたま勘で動いたけど、こういうのってどこみればいいの!
manにも書いてないしぐぐっても同様事例ないし。
なんかunixとかの世界の暗黙知的なとこ多すぎてなんでもないところではまるケース多すぎる。どうすればいいんだ。


今回のも俺の環境ではうまくうごきましたよレポートです。
gettextってPHPいれたときに一緒に入ったのかな。それとももともと入ってたのかな。もうわけわからん。

俺の環境

$ xgettext -V
xgettext (GNU gettext-tools) 0.17
Copyright (C) 1995-1998, 2000-2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
作者 Ulrich Drepper.