概要
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 のみで有効なメッセージを設定することもできる。
関連リンク
- https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/tutorials/l10n.html
- https://wiki.mozilla.org/Labs/Jetpack/Reboot/JEP/113
- https://bugzilla.mozilla.org/show_bug.cgi?id=549315
- https://bugzilla.mozilla.org/show_bug.cgi?id=612770
- http://media.indifex.com/other/transifex-commonpool-screencast.ogg
更新履歴
- 2012/05/19: SDK 1.5 で Localization API が復活した。
- 2010/11/24: SDK 0.10 では Localization API は削除された。
- 2010/10/29: リンク先修正。
- 2010/10/03: 公式の API ドキュメントにリンク。
- 2010/08/28: common-pool の翻訳環境のデモにリンク。表現を改善。
- 2010/06/17: patch 2.3 で setServer は削除された。
- 2010/06/15: 初版作成。