[あすかぜ・ねっと]あすかぜ・ねっとその他Add-on SDK (Jetpack SDK) > Localization

Localization

概要

Localization API は、言語に応じてメッセージを切り替えるための API である。 Add-on SDK 0.5~0.9 までは Mozilla のサーバで common-pool と呼ばれる共通の辞書を提供する方針で開発が進められていた。 その後一旦 API が削除されたが、Add-on SDK 1.5 で、common-pool ではなくアドオン内の .properties ファイルを参照するという形で復活した。

以前の Localization API の使い方

以下の内容は SDK 0.5 の開発途中版のものであり、現在の API とは異なる。

Localization API では、個々の拡張がそれぞれ辞書を持つのではなく、 サーバで common-pool と呼ばれる共通の辞書を提供する。 この方式のメリットとして、「OK」「Cancel」「Loading」などよく使われる言葉の翻訳が 1 回ですむ、 元の拡張が対応していない言語にも第三者が訳をつけられる、といったことが挙げられる。 この辞書データは http://l10n.mozillalabs.com/ に問い合わせるようになっているが、2010/11/24 現在ではデータは公開されていない。

辞書データを作成するための Web アプリケーションが開発中であり、デモビデオが http://media.indifex.com/other/transifex-commonpool-screencast.ogg で公開されている

このページの内容の動作確認は jetpack-sdk 7fa6ebb155c3 + localization patch v2

localization.setServer には辞書ファイルの URL を指定する。 これはローカルのファイルでも HTTP の URL でもよい。 URL には自動的に「?locale=(locale)&jid=(programID)」が付加される。

exports.main = function() {
  const self = require("self");
  const widget = require("widget");
  const timer = require("timer");
  const localization = require("localization");

  localization.setServer(self.data.url("message.json"));
  const _ = localization.get;

  timer.setTimeout(function(){
    widget.add(widget.Widget({
      label: _("Greetings"),
      content: _("Hi!"),
      onClick: function(e){
        var window = e.view;
        window.alert(_("Hello!"));
        window.alert(_("Good bye!"));
      }
    }));
  }, 1);
};

なお、localization.setServer は非同期にファイルを読み込むため、 setServer 直後は設定が有効になっていない(2010/06/15 現在)。 読み込み完了を待つために setTimeout を使っている。

辞書ファイルは次のような JSON ファイルである。 self.data.url を使う場合には、辞書ファイルは data フォルダに置く。

{
  "Hi!": {
    "ja": {
      "translation": "挨"
    },
  },
  "Hello!": {
    "ja": {
      "translation": "こんにちは!"
    },
  },
  "Good bye!": {
    "ja": {
      "translation": "さようなら!"
    },
  },
}

対応するキーワードや言語がない場合、メッセージは変換されず元のままの文字列が返される。 同じメッセージに対して第 2 引数によってメッセージを切り替えることや、 特定の Jetpack ID のみで有効なメッセージを設定することもできる。

[Localization スクリーンショット]

更新履歴

Add-on SDK (Jetpack SDK) に戻るこのページの一番上へ

Menu


Copyright (C) 2010-2012 asukaze, Some Rights Reserved.
Last Update: 2012/05/19
mail (at) asukaze.net