« オシャレ魔女ラブ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氏のおかげで楽しい時間を過ごせました。お二人に感謝します。
追記
2006-04-25
Elias Torres » Google Calendar Quick Add Firefox Extension
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.
上記バージョンに対して日本語を通るように改造したものを用意しました。 → 日本語が通る quickgooglecal.xpi
修正箇所は、2006-04-23 版の quickgooglecal.xpi と同じところです(同じ修正で対応できます)。
投稿者: tsupo 2006.04.26 午前 01:11
| 固定リンク
|
|
|
|
|
アマゾンわくわく探検隊
トラックバック
この記事のトラックバックURL:
この記事へのトラックバック一覧です: [メモ] 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... 続きを読む
コメント
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)