FireVoxにもどる
このコンテンツは現在執筆中です。
FireVoxを日本語化したときの工程や、資料をまとめます。 日本語ロケールファイルを付け加える作業だけではなく、 ローカリゼーション機構のない拡張にlocalフォルダを作り多言語対応にする方法です。 一からローカリゼーション対応の拡張を作るときにも役に立つでしょう。
これは私がこのようにやったという報告であって、正攻法ではないかもしれません。
主に以下のサイトを参考にしました。他にも記録していないページを参考。
ここにあるページの情報を見れば、自分がまとめる必要もないかもしれない。
ここにあるサイトは古い情報が含まれている可能性があります。事実そのために手こずったところもあります。
拡張の動作内容を記述しているのがJS拡張子を持つJavascriptファイルです。このJavascriptで出力される文字列もローカリゼーションの対象となります。
おおまかな手順は次の通りです。
作業の対象は、以下の3種類のファイルです。
それでは、細かな手順を示します。
PROPERTIESファイルはlocaleフォルダ内に作ります。これはJavascript内で記述されている文字列の言語のロケールフォルダ内です。例えば英語で記述してありメッセージが英語で出力されるプログラムを作業の対象にする場合は英語ロケールとなり、その言語のinstall.rdfで記述しているロケール指定の階層にファイルを作ります。
例えば、以下のような記述がinstall.rdfファイル内にあるとき、
<em:locale>locale/en-US/</em:locale>
この場合は、localeフォルダ内のen-USフォルダに作ります。次の場合は、
<em:locale>locale/en-US/hoge/</em:locale>
localeフォルダ内のen-USフォルダ内のhogeフォルダ内に作ります。
名前は任意ですが、その拡張機能の名前にしたほうがわかりやすいでしょう。そして拡張子にpropertiesを付けます。
例えば、拡張機能hogeを作っているときは、hoge.properites とします。
またXULファイル毎にPROPERTIESファイルを用意したり、わかりやすいように複数に分類してもかまわないでしょう。
PROPERTIESファイルの登録はそれが使われるXULファイル内で、stringbundleset要素とstringbundle要素を使って登録します。
以下のように登録することで、Javascriptのプログラム内からPROPERTIESファイルの内容を参照することができるようになります。
利用するPROPERTIESファイル毎にわかりやすい任意のidを決めてstringbundle要素を作ります。
例えば、idがhoge-bundle、PROPERTIESファイルがhoge.propertiesのときは、
<stringbundle id="hoge-bundle" src="chrome://hoge/locale/hoge.properties"/>
となります。
これを、PROPERTIESファイルの数だけ用意して(通常は一つでOK)、全体をstringbundleset要素で囲みます。このstringbundleset要素にも任意のid属性を指定しておきます。
<stringbundleset id="hoge-bundle-set"> <stringbundle id="hoge-bundle" src="chrome://hoge/locale/hoge.properties"/> </stringbundleset>
Javascriptの書かれているjsファイル内から、文字列の部分を探し出します。これにはJavascriptの文法が分かっていなくてはいけません。文字列をすべて抜き出してしまえばいいというものでもありません。表示もしくは音声による出力に関連するものや、外部からの入力に対するものなど、プログラムの動作を詳しく分析しながら、判断していきます。
このとき便利なのは、Javascriptの構文を認識し着色してくれるエディタですね。文字列部分を容易に見つけ出せます。もしくは検索で該当箇所を着色してくれる機能があるエディタです。検索には次のような正規表現を使えばいいでしょう。
("[^"]*"|'[^']*')
XULファイル内で呼び出されているJavascriptファイルに対して一つずつ翻訳対象の文字列がないか調べていきます。見つかったら、その情報を先ほどXULファイルに登録したPROPERTIESファイルに、記述していきます
記述の仕方ですが、文字列を見つけたらそれを指し示す名前を決めます。万人のために英語的な名前にします。この名前の後に'='記号を置いて、その文字列そのものを置きます。文字列を囲む引用符はいりません。改行しこれを繰り返します。
例えば、"Hello,World!"という文字列が見つかったら、PROPERTIESファイルに、
HelloWorld=Hello,World!
という行を追加します。
以上の手順でローカリゼーション対応の機能拡張パッケージを作成できたら、翻訳したい言語(今回は当然日本語)で、ローカライズをしていきます。
何をなすべきかが分かっていれば、上記のローカリゼーション対応作業の中で同時並行で、以下の作業をおこなってもかまいません。