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.

日本語ハッシュタグに対応しました。(正規表現よりentitiesで実装したほうがよい)

whotwi - グラフィカルTwitter分析

いままでハッシュタグ正規表現で判別していました。
ただ日本語ハッシュタグの条件は以下のように意外と複雑で、「日本語ハッシュタグ 正規表現」でぐぐった結果の多くが句読点を無視していました。
自分で書くのも面倒なので、twitter apiの「include_entities」をオンにして、その要素を直接使うことにします。
こうすることで、Twitter公式とハッシュタグの判定が変わってしまうこともないですし、同時に導入されたハングルハッシュタグなどにも対応でき、さらに将来の仕様変更にも対応することができます。

ドキュメント: GET statuses/user_timeline | Twitter Developers

ちなみに日本語ハッシュタグの条件は以下。

  • #か#で始まる
  • 前後には「全角スペース」「半角スペース」「全角読点」「全角句点」「半角読点」「半角句点」「ツイートの先頭」「ツイートの最後」
  • 全角でも半角でも英数字は半角、日本語は全角に変換されて同じ物として扱う

protectedユーザも分析するようになりました

whotwi - グラフィカルTwitter分析

  • protectedユーザも分析するようになりました

※もしかしたらバグがあって分析できない場合があるかもしれません。その時はごめんなさい。

のちのちログインしたら、protectedユーザをフォローしてる人は見られるようにしたいな。
そのためにfriendships情報をちゃんと取るようにしてもいいな。

本日の更新情報

whotwi - twitter分析ならフーツイ - グラフィカルTwitter分析・フーツイ

  • fav分析が見たいというご意見を頂いたけど、ちょっと大変そうだったのでとりあえずfavotterとfavsterへのリンクを左サイドバーに貼ってみた
  • その他いいねボタンなどの位置を変更

これからやりたいこと!

whotwi - twitter分析ならフーツイ - グラフィカルTwitter分析・フーツイ
とりあえずまたやりたいことをいくつか思いついたり前回のアイディアから増えたり、実際に完了して減ったりしたのでまた書く。
自分用メモ。チラ裏。

  1. APIアクセスを並列アクセスに変更する(こうすると3200件のタイムラインを6秒とかで読み終わるんだが、OAuthのライブラリを結構がっつり読まなくちゃいけない・・・)
  2. ログインしてればprotectedでも分析できるようにする
  3. ログインしたらデフォルトの800件じゃなくて2000件くらい分析対象にする
  4. アクセス解析を見ると、訪問者の3割がスマホユーザなのでスマホ向けページも作る
  5. むしろアプリにしたいw
  6. whotwiに登録した人の統計情報を一覧するページを作る
  7. 1日平均ツイート数などの偏差値を表示する(これだけ別サイトにしてもいいかも!)
  8. クローラのようなものを書いて仲良しの人をどんどんクロールする
  9. 入れられているリスト名を集計、フォローしていないのにリストにはいれてる人を一覧して新たな出会いを生んでいる(リストアッパーさんからインスパイアする)
  10. 仲良し一覧にどんなリプライしたかみられるようにする(twiRyさんからインスパイア)
  11. 2ユーザ間の共通点を出したらおもしろそう(えごったーさんからインスパイア)

曜日x時間xクライアント分析のグラフを追加しました!

whotwi - twitter分析ならフーツイ - グラフィカルTwitter分析・フーツイ
曜日×時間×クライアントのグラフを追加してみました。
Twitter Chartsさんからインスパイアしましたw
これに各時間でよく使うクライアントもわかるようにしてみました。


たとえば、この人は平日昼間なのに頻繁につぶやいてる・・・、ニートだ!
この人は朝7時はクライアントがiPhoneのクライアントになっている、通勤中にTwitterしてるんだな・・・
といった分析が簡単に行えます!