読者です 読者をやめる 読者になる 読者になる

MDCの日本語版と英語版を切り替えるFirefox拡張機能を作成する (その4)

Firefox 連載

前回に引き続き、MDCの日本語版と英語版を切り替えるFirefox拡張機能を作成する。

今回は、メニュー表記をローカライズする。これでメニュー表示の英語/日本語の切り換えができるようになるはずだ。

参考にしたページは以下。

作成したファイル

今回新たに作成したファイル/ディレクトリは以下の通り。

locale/
-- en-US/
`-- switch_page_locale.dtd
`-- ja/ `-- switch_page_locale.dtd

あとは、今までに作成したchrome.manifest、overlay.xulに追記した。

ファイルの内容

作成したファイルの内容は以下の通り。はっきり言って今回の作業は簡単なので、適当にFirefox 3ではじめる拡張機能開発を真似しただけだ。

en-US/switch_page_locale.dtd
<!ENTITY switchPageLocaleMenu.label "Switch Page Locale">
ja/switch_page_locale.dtd
<!ENTITY switchPageLocaleMenu.label "ページのロケールを変更する">
chrome.manifest
content switch_page_locale chrome/content/

# ここを追加
locale  switch_page_locale en-US  locale/en-US/
locale  switch_page_locale ja  locale/ja/

overlay chrome://browser/content/browser.xul chrome://switch_page_locale/content/overlay.xul
overlay.xul
<!-- ファイルの上の方に追加 -->
<!DOCTYPE overlay SYSTEM "chrome://switch_page_locale/locale/switch_page_locale.dtd">

  <!-- 途中省略 -->

  <popup id="contentAreaContextMenu">
    <menuitem id="switchPageLocale-menu"
              label="&switchPageLocaleMenu.label;"
              accesskey="s"
              oncommand="SwitchPageLocale.switchLocaleCurrenTab();" />
  </popup>

簡単に説明しておくと、まず *.dtd ファイルでロケールパッケージ(en-USなど)ごとの文言を定義する。これらのファイルは別にどこに置いても良い。今回はlocale/en-US, locale/ja の下に作った。

そして、chrome.manifestでロケールパッケージ名とdtdファイルの場所の対応を記述する。そうすると、DOCTYPE宣言をしたXULファイル内で"&switchPageLocaleMenu.label;"みたいな感じで文言を参照できるようになる。

動作確認

さっそく動作確認をしてみる。about:configで「general.useragent.locale」の値を"ja", "en-US"と切り換えると表示が変わるはずだ。

でも、僕の環境(Ubuntu: Firefox 3.0.1)では切り替わらず、何をどうやっても日本語表示のままだった。

結局原因はよく分かっていないのだが、Firefoxの起動オプションに「-UILocale 」というのがあるので、それで確認した。

-UILocale ja の場合

-UILocale en-US の場合

英語表記に変わった。今回はこれで終わりだ。

< 前へ

この連載の一覧