X-0006 複数の言語を切り替え可能にする

複数言語を切り替えられるようにするには、以下のような手順を踏みます。

まずは言語ごとに dtd ファイルを用意し、各ディレクトリに以下のような内容のマニフェストファイルを置きます。言語名はそれぞれの言語に合わせて書き換えてください。

<?xml version="1.0"?>
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:chrome="http://www.mozilla.org/rdf/chrome#">

   <RDF:Seq about="urn:mozilla:locale:root">
      <RDF:li resource="urn:mozilla:locale:en-US"/>
   </RDF:Seq>

   <RDF:Description about="urn:mozilla:locale:en-US"
      chrome:displayName="English(US)"
      chrome:author="制作者名"
      chrome:name="en-US">
      <chrome:packages>
         <RDF:Seq about="urn:mozilla:locale:en-US:packages">
            <RDF:li resource="urn:mozilla:locale:en-US: パッケージ名"/>
         </RDF:Seq>
      </chrome:packages>
   </RDF:Description>

</RDF:RDF>

次にファイルの配置です。構成はどうでも構いませんが、このパッケージでは以下のように配置しています。

その上で、インストール時に locale として locale/en-US/ と locale/ja-JP を両方とも登録します。

あとは XUL 中に chrome://package/locale/package.dtd と書いておけば、 Mozilla のメニューで選択された方の言語(なければ英語の言語)のファイルが自動で選ばれます。

ただし、これだけだと、インストール直後はどの言語パックも選択されていないという状態になってしまいます。デフォルトで特定の言語を選択された状態にしておきたい場合、 /content/contents.rdf のパッケージそのものの登録情報を、以下のように書いておいて下さい。

<RDF:Description about="urn:mozilla:package:hogehoge"
    chrome:displayName="Hogehoge"
    chrome:author="SHIMODA Hiroshi"
    chrome:name="Hogehoge">
       <chrome:selectedLocale resource="urn:mozilla:locale:en-US:hogehoge"/>
</RDF:Description>

大カンチガイでした。 /content/contents.rdf は以下のように書かなければなりません。

<RDF:Description about="urn:mozilla:package:hogehoge"
    chrome:displayName="Hogehoge Package"
    chrome:author="SHIMODA Hiroshi"
    chrome:name="hogehoge"/>

urn:mozilla:package: 名前 と chrome:name="名前" には同じ値を書きます。ここで指定した名前が chrome:// 名前 /content/ などの Chrome URL にも使われることになり、また、こうしておくことで、 Mozilla がそのパッケージの最適な言語を自動的に選択してくれるという仕組みになっています。