:a! ペースト ESC
めもめも。
サンプルコードをコピペするときに「うがーっ!」ってなりがち。
:a! ペースト ESC
めもめも。
サンプルコードをコピペするときに「うがーっ!」ってなりがち。
こういう場合には nsIStringBundleService が便利である。このXPCOMサービスは createBundle メソッドによって指定したURIから properties ファイルを読み込んで nsIStringBundle 型のXPCOMオブジェクトを生成し、 GetStringFromName や formatStringFromName メソッドによってローカライズされた文字列を取り出したりすることができる。
XULに埋め込んでもgetElementByIdで取得できない怪奇が発生したので、これを使ってみることにした。
こっちのほうがスマートなので良しとする。
文字列取得関数を返す仕様
function (path) { const BUNDLE_SVC = AnkUtils.ccgs('@mozilla.org/intl/stringbundle;1', Components.interfaces.nsIStringBundleService); var stringBundle = BUNDLE_SVC.createBundle(path); return function (key, replacements) { try { if (!replacements) { return stringBundle.GetStringFromName(key); } else { return stringBundle.formatStringFromName(key, replacements, replacements.length); } } catch (e) { return key; } }; };