前回まででタグヘルパー拡張機能の実装は完了しましたが,新しく追加したメニュー項目やダイアログの文言はすべて英語のままとなっています。今回はlocaleパッケージを追加することで,これらの文言をローカライズ可能にし,日本語での表示ができるようにします。なお,第5回完成時点でのソースファイルは,下記URLから入手可能です。
ソースファイルのフォルダ構成
前回までは,第2回で説明した「クロムと3種類のパッケージ」のうち,contentパッケージのみ使用しました。今回は,localeパッケージを追加します。localeパッケージのソースファイルは「locale」フォルダ内に作成した言語別のサブフォルダ内に格納します。したがって,第5回完成時点での各種ソースファイルのフォルダ構成は図1のようになります。また,第5回で新たに作成するソースファイルの概要を表1に示します。
表1 第5回で新たに作成するソースファイルの概要
| ファイル名 | 概要 |
|---|---|
| overlay.dtd | overlay.xulにて使用する実体参照を定義したDTDファイル。 |
| overlay.properties | overlay.jsにて使用するローカライズ可能文字列を定義したpropertiesファイル。 |
localeパッケージの追加
localeパッケージを追加するために,クロムマニフェストへリスト1の内容を追加してください。
リスト1 クロムマニフェストへの記述内容1(localeパッケージの追加)
content taghelper content/
locale taghelper en-US locale/en-US/
locale taghelper ja-JP locale/ja-JP/
overlay chrome://browser/content/browser.xul chrome://taghelper/content/overlay.xul
リスト1の2行目が英語版(en-US)のlocaleパッケージを登録するための宣言です。パッケージ名が「taghelper」,localeパッケージ内のソースファイルを格納したフォルダへの相対パスが「locale/en-us/」となります(注1)。同様に,リスト1の3行目が日本語版(ja-JP)のlocaleパッケージを登録するための宣言です。もし,フランス語や中国語といった他言語版のlocaleパッケージを追加するのであれば,リスト1のような宣言を追加し,「locale」フォルダ内に言語別のサブフォルダを作成して,その中に各言語へローカライズしたソースファイルを格納します。
- 注1)
- 今回は簡便のためlocaleパッケージのフォルダパスを「locale/en-US/」のようにしていますが,一般的にはフォルダパスを「locale/en-US/taghelper/」のようにします。
DTDファイルによるローカライズ
XULドキュメント内にハードコーディングされた英語の文字列を各言語へローカライズ可能にするには,英語の文字列を実体参照へと置き換え,その実体参照の定義を各言語のlocaleパッケージ内に格納したDTDファイルへ記述します。まず,「overlay.xul」へリスト2の内容を追加してください。
リスト2 「overlay.xul」への記述内容(実体参照への置き換え)
<?xml version="1.0"?>
<!DOCTYPE overlay SYSTEM "chrome://taghelper/locale/overlay.dtd">
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://taghelper/content/overlay.js" />
<popup id="contentAreaContextMenu">
<menuitem id="taghelper-menu"
label="&taghelperMenu.label;"
oncommand="TagHelper.generateTags();" />
</popup>
</overlay>
リスト2では,menuitem要素のlabel属性「Generate Tags from Selection」を実体参照「&taghelperMenu.label;」に置き換えています。その実体参照の定義は「overlay.dtd」に記述しますので,「overlay.xul」の冒頭部分へDOCTYPE宣言を追加し,「overlay.dtd」を呼び出すようにします。
各言語の「overlay.dtd」には,リスト3,リスト4のような内容を記述してください。なお,DTDファイルに日本語などのマルチバイト文字列を記述する場合,文字コードUTF-8,BOM(Byte Order Mark)無しの形式でファイルを保存する必要があります。
リスト3 「en-US」フォルダ内の「taghelper.dtd」への記述内容
<!ENTITY taghelperMenu.label "Generate Tags from Selection">
リスト4 「ja-JP」フォルダ内の「taghelper.dtd」への記述内容
<!ENTITY taghelperMenu.label "選択範囲からタグを生成">
動作確認
ここまでできたら,いったん動作確認を行います。今回はクロムマニフェストを修正して新たにlocaleパッケージを追加しました。クロムマニフェストはFirefox起動時に読み込まれますので,今回変更した内容を反映させるためには,Firefoxを一度再起動する必要があります。
Firefox再起動後,適当なWebページ上で範囲を選択し,右クリックメニューを表示すると,図2のようにタグヘルパーのメニュー項目が日本語で表示されることを確認してください。ただし,英語版のFirefoxを使用している場合,英語で表示されます。
なお,日本語版のFirefoxにて英語での表示を確認したい場合,「about:config」で設定値「general.useragent.locale」の値を「ja」から「en-US」に変更し,Firefoxの新しいウィンドウを開いてください。

