2006.12.30

userChrome.js スクリプトで日本語を使う

年の瀬というのに userChrome.js に嵌ってます。で、これは手軽にメニュー等を追加出来るのはいいんですが、そのまんまだと日本語が使えないんですね。それで日本語が使えればなと少し調べたら、Greasemonkey スクリプトと同じようにエスケープした文字列を書いとけばいけるようです。

実際に使う時は Firefox のロケールを調べて、その値によってラベルの文字列を変えておけば、何となくそれらしくなるかな。

var locale = Components.classes["@mozilla.org/preferences-service;1"].
                      getService(Components.interfaces.nsIPrefBranch);
locale = locale.getCharPref("general.useragent.locale");
var menuitem = document.createElement("menuitem");
menuitem.setAttribute("label", locale.indexOf("ja-JP") == -1 ? "Sample" : "\u30B5\u30F3\u30D7\u30EB");

日本語版の Firefox の場合は日本語のメニューが出るように、以前公開したスクリプトも少し修正しました。

エスケープした文字列を所得するには色々方法があるようです。私は Firebug のコマンドラインに日本語を入力して結果をコピーしています。

Days on the Moon の nanto_vi さんからコメントを頂きまして、userChrome.js 用スクリプト: Days on the Moon で公開されている UCJS Loader を使えばスクリプト内に直接日本語文字(UTF-8)を記入出来るようです。便利なスクリプトも多数公開されてますし、勉強になります。

追記日時:2007-01-08T20:43

関連記事

この記事へのトラックバックURL
http://wildlifesanctuary.blog38.fc2.com/tb.php/149-c6107cd1
この記事へのトラックバック
この記事へのコメント
UTF-8 で書いておけばいけるはずだけど。こんな風に。
http://www.ne.jp/asahi/nanto/moon/2006/12/31/copy-url-lite.uc.js
Posted by mal at 2007.01.01 03:49 | 編集
通常のuserChrome.jsファイルやzeniko氏作成のSub-Script Loaderで読み込んだJSファイル(mozIJSSubScriptLoaderで読み込んだJSファイル)中では日本語文字は使えません。(ISO-8859-1として読み込まれる?)
私の場合はscript要素経由でJSファイルを読み込むローダー(*)を使っているので、JSファイルはXULファイルと同じ文字コード(UTF-8)として読み込まれます。
* http://www.ne.jp/asahi/nanto/moon/2006/12/31/userChrome.js
Posted by nanto_vi at 2007.01.01 22:11 | 編集
ほんとだ、素の userChrome.js だと unicode-escape しないと駄目ですね。スイマセン。
Posted by mal at 2007.01.03 00:08 | 編集
>> mal さん
ご指摘ありがとうございます。私は Sub-Script Loader でスクリプトを読み込んでいたので化けてたようです。

>>nant_vi さん
なるほど。読み込みの方法で扱える文字コードが決まっているとは知りませんでした。
勉強になります。
Posted by macaw at 2007.01.08 20:40 | 編集