Mozilla Thunderbird アドオンの作り方 ~ 多言語化

Posted by
ぴろり
Posted at
2014/04/20 10:15
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
開発メモ カテゴリ

 Mozilla Thunderbird アドオンとして、ひとまず動作するものが作れるようになりましたが、公式サイトで世界中に公開することを視野に入れると、特にユーザ数が多い英語だけでも他言語化対応しておいた方が良いでしょう。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

スクラップ帳 » Mozilla Thunderbird アドオンの作り方

 Mozilla Thunderbird 用アドオン開発を始めるための開発環境の準備から、公式サイトで配布するために、少なくとも英語で多言語化するまでの手順を解説しています。

  1. Mozilla Thunderbird アドオンの作り方 ~ 開発環境の準備 2014/03/16
  2. Mozilla Thunderbird アドオンの作り方 ~ アドオンのひな形 2014/03/21
  3. Mozilla Thunderbird アドオンの作り方 ~ 独自UIの追加 2014/04/05
  4. Mozilla Thunderbird アドオンの作り方 ~ UI動作の追加 2014/04/12
  5. Mozilla Thunderbird アドオンの作り方 ~ 多言語化 2014/04/20 今ココ

ロケール リソースの追加

 前回までは、ボタンのラベルや表示されるメッセージを、XUL や JavaScript のコード内に直接記述していました。多言語化を考える場合、言語によって表示が異なるようなものはリソースとして別に持っておき、コードからはこのリソースを参照するようにします。そこで、言語ごとにリソースを持てるよう、chrome.manifestlocale の指定を追加します。

content hoge chrome/content/
overlay chrome://messenger/content/folderProps.xul chrome://hoge/content/my.xul
locale hogera ja locale/ja/
locale hogera en locale/en/
\{DEV_DIR}
+- index.rdf
+- chrome.manifest
+- \chrome
   +- \content
      +- my.xul
      +- my.js
+- \locale
   +- \ja
      +- foo.dtd
      +- bar.properties
   +- \en
      +- foo.dtd
      +- bar.properties

XUL の多言語化

 ユーザ インタフェースを定義する XUL ファイル内で、言語依存の文字列を直接記述している部分を、リソースを参照するように書き換えます。

<!DOCTYPE overlay SYSTEM "chrome://hogera/locale/foo.dtd">
<overlay id="sample"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <script type="text/javascript" src="my.js"></script>
    <statusbar id="status-bar">
        <button label="&hoge.press_me;" oncommand="MyCommand(this)" />
    </statusbar>
</overlay>
1 行目
chrome.manifest で宣言した hogera 名前空間から foo.dtd を参照するための宣言です。
6 行目
押しボタンの label プロパティに指定する文字列を、hoge.press_me というリソース文字列で指定しています。

 そして、リソース文字列とリソースの実体を言語ごとに定義した foo.dtd を作成します。*1

<!-- コメント行なのです! -->
<!ENTITY hoge.press_me "押すべし">
<!-- I'm a comment line. -->
<!ENTITY hoge.press_me "Press Me">


Fig.1 en ロケールで起動した場合(1)


Fig.2 ja ロケールで起動した場合(1)

JavaScript の多言語化

 JavaScript からリソースを読み込むには少し手間です。先ず XUL ファイル内で、ローカライズされたリソースを、プロパティ ファイルから読み込むために stringbundle 要素を作成します。

<!DOCTYPE overlay SYSTEM "chrome://hogera/locale/foo.dtd">
<overlay id="sample"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <stringbundleset>
        <stringbundle id="sbLabels" src="chrome://hogera/locale/bar.properties" />
    </stringbundleset>
    <script type="text/javascript" src="my.js"></script>
    <statusbar id="status-bar">
        <button label="&hoge.press_me;" oncommand="MyCommand(this)" />
    </statusbar>
</overlay>

 次に JavaScript では、getElementById で先の stringbundle 要素を取得し、getFormattedString メソッド または getString メソッドを呼び出し、キー名から目的の文字列を得るという手順を踏みます。

function MyCommand( me ) {
    var sb = document.getElementById( 'sbLabels' );
    me.label = sb.getString( 'TestTest' );
}

 キー名と文字列を言語ごとに定義した bar.properties を作成します。

# この行はコメントなの
TestTest=こんにちは!雷鳥です!
# I'm a comment line.
TestTest=Hello, Thunderbird addon.


Fig.3 en ロケールで起動した場合(2)


Fig.4 ja ロケールで起動した場合(2)

動作テスト

 雷鳥の動作する言語ロケールは、設定エディタの general.useragent.local からでも変更できますが、多言語化の作業中は、言語ロケールを明示*2して雷鳥を起動するショートカットを、言語ロケールごとに作っておくと便利です。

thunderbird.exe -UILocale en-US -console -jsconsole -no-remote -P 開発用

参考リンク

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

  1. *1 マルチバイト文字を含むファイルは BOM 無し UTF-8 で保存してください
  2. *2 コマンドライン オプションの -UILocale を利用する

この記事を読んだ人はこんな記事も読んでいます記事リコメンデーションについて

カバー画像:Mozilla Thunderbird アドオンの作り方 ~ UI動作の追加

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。