[メモ] quickgooglecal.xpi で、日本語が使えるようにする

観測気球

収集物の記録書庫 a data archive of collection -- collectible toys

[要旨] Google Calendar にイベントを登録する Firefox の拡張機能 quickgooglecal を日本語に対応する作業に参加しました。忘れないうちに何をやったか、メモしておきます。
[キーワード] Firefox,Google Calendar,XUL,JavaScript

« オシャレ魔女ラブandベリー チョコスナック、ウェファーチョコ | トップページ | Google Calendar での「日本の祝日」の扱い(BlogPet) »

2006.04.26

[メモ] quickgooglecal.xpi で、日本語が使えるようにする

どこのページからでもGoogle Calendarに予定を追加できるFirefox用エクステンションですが、日本語で入れると化けてしまっていたので自分でコードを見たけれどもよくわからないのでIRCとSkype経由でakiyanさんとtsupoさんに声をかけて知恵を拝借というか全部作ってもらいました。

Going My Way: Firefox利用時にどのページからでもGoogle Calendarに追加できるquickgooglecalを日本語に対応

何をどう直せば、日本語が通るようになったのか、忘れないうちにメモ。

修正対象

quickgooglecal.xpi (実体は zip 形式のアーカイブファイル) の中に入っている chrome/quickgooglecal.jar (このファイルも実体は zip 形式のアーカイブ) の中の content/hello.xul というファイルが修正対象です。

修正箇所

(修正前) 98行目~

   var entry = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'>";
     entry += "<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category>";
     entry += "<title type='text'>" + parsed[0][1] + "</title>";
     entry += "<gd:when startTime='"+ start +"' endTime='" + end + "'></gd:when>";
     entry += "</entry>";

parsed[0][1] の中身をエンコードというかエスケープすれば、日本語が通るようになるだろう、というところまではすぐにわかるんですが、その後、ちょっと手古摺りました。escape() でも encodeURIComponent() でも駄目で、数値参照変換した結果そのままの文字列(%u123456 とか、そんな感じの文字列)として「イベント」の名前が Google Calendar に登録されてしまいます。

しばらく、ああでもない、こうでもないといろいろ試行錯誤した後、akiyan氏が、%uNNNN 形式ではなく &#nnnn; 形式にエンコードすればうまくいくことを発見し、ようやく日本語が通るようになりました。つまり、「文字列を &#nnnn; 形式にエンコードする function」として

function number_html(i) {
  var num = 16;
  var j ="";
  for(var n = 0; n < i.length; n++) {
    j += ("&#x"+(i.charCodeAt(n)).toString(num)+";");
  }
  return j;
}

というのを用意し、以下のように修正すれば、日本語が通るようになります(number_html() は akiyan氏作成)。

(修正後) 98行目~

   var entry = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'>";
     entry += "<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category>";
     entry += "<title type='text'>" + number_html(parsed[0][1]) + "</title>";
     entry += "<gd:when startTime='"+ start +"' endTime='" + end + "'></gd:when>";
     entry += "</entry>";

という感じで、akiyan氏の発見により、無事に日本語が通るようになりました。今回は、おもしろい問題を提供していただいたkengo氏のおかげで楽しい時間を過ごせました。お二人に感謝します。

Google Calendar に日本語でイベントを追加すると……

ちゃんと登録されました
日本語を使ってもちゃんと登録されます

追記

2006-04-25
Wing Yung has fixed the shortcut bug. It seems the problem was we needed to take the keyset containing the shortcut and add it to the global firefox key sets.

Elias Torres » Google Calendar Quick Add Firefox Extension

上記バージョンに対して日本語を通るように改造したものを用意しました。 → 日本語が通る quickgooglecal.xpi

修正箇所は、2006-04-23 版の quickgooglecal.xpi と同じところです(同じ修正で対応できます)。

投稿者: tsupo 2006.04.26 午前 01:11 | 固定リンク | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数 | 酢鶏巡回中

楽天市場


プログラミング」カテゴリ内の最近の記事

品揃え豊富で安い!NTT-X Store


アマゾンわくわく探検隊

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/6737/9768524

この記事へのトラックバック一覧です: [メモ] quickgooglecal.xpi で、日本語が使えるようにする:

» [Ruby][Google]Rubyで日本語をUnicodeの数値参照に変換する from pingoo’s blog
目の前に川があって、その向こうにゴールがあるときに、橋が見つからない、という気分だった本日。やろうとしたことは、GoogleService.rbで、日本語でイベントを追加する、というもの。 まず、そもそもGDataでのエンコーディングはどうなってるんだ、というところなんですが、FireFoxのquickgooglecalプラグインで、すでに実現されてます。[http://watcher.moe-nifty.com/memo/2006/04/_quickgooglecal_ecb9.html:tit... 続きを読む

受信: 2006.05.05 午後 10:16

コメント


Thanks for your suggestion. I've patched the extension so others can take advantage of it.

投稿者: Elias (2006.04.27 午前 04:18)


ネットで上記バージョンや大きい感じと、おもしろい上記バージョンを参照しなかったの?


投稿者: BlogPetのarimy (2006.04.29 午前 09:17)


http://www.itmedia.co.jp/bizid/articles/0704/02/news036.html
↑ この記事で、akiyan.com の人が取り上げられています。

投稿者: tsupo (2007.04.02 午後 09:22)

コメントを書く




※イタズラ防止のため、メールアドレスを入力しないと投稿できません。

次からのコメント入力の手間を省くために、名前やメールアドレスをcookieに記憶しますか?


URL を入力すると、その URL にリンクがはられます。
なお、メールアドレスは公開されません。ご安心ください。


ワード

ニッセン

fujisan.co.jp

楽天市場