Add-on Builderで作成した拡張機能をローカライズ(多言語化)する方法について
「Add-on Builderでローカライズ(多言語化)に対応した拡張機能を開発できません」と「(続) Add-on Builderでローカライズ(多言語化)に対応した拡張機能を開発できません」で述べたように Mozillaの "Add-on Builder"ではローカライズ(多言語化)した拡張機能の作成をサポートしていません。
しかし、なんらかの解決方法があるはずだと考えて、Add-on SDKのソースコードを少しハックしたところ、若干の手作業を付け加えることで Add-on Builderで作成した拡張機能をローカライズ(多言語化)することに成功しました。
ということで、ローカライズ(多言語化)に関する前提知識とローカライズ(多言語化)する方法について説明します。
まず前提知識として、次の2つのドキュメントは必読です。
これらのドキュメントからローカライズ(多言語化)のデータは、拡張機能のルートフォルダ直下の localeフォルダに格納されている "xx-YY.properties"というファイルになっています。
ところが、Add-on SDKをハックしたところ、実行時には拡張機能のルートフォルダ直下の "locales.json"と拡張機能のルートフォルダ直下の localeフォルダに格納されている "xx-YY.json"というファイルが読み込まれていることが判りました。
ということで、"xx-YY.properties"ではなく、"locales.json"と "xx-YY.json"を Add-on Builderで作成した拡張機能のパッケージ(xpiファイル)に埋め込むとローカライズ(多言語化)に対応した拡張機能になるわけです。
拡張機能のパッケージ(xpiファイル)の実体はZIPファイルですので、拡張子を .xpiから .zipに変更すると簡単にファイルやフォルダの変更ができます。
また、ローカライズ(多言語化)データを別管理にするのは面倒なので、拡張機能の dataフォルダの直下に localeフォルダを作成しておいて、拡張機能のパッケージ内でルートフォルダの直下に移動(コピペ)すると簡単だと思います。(locales.jsonも同様です)
locales.jsonのサンプル(用意されている言語データのリスト):
en-US.jsonのサンプル(en-US.propertiesを json化したもの):
以上、ご参考になれば幸いです。
しかし、なんらかの解決方法があるはずだと考えて、Add-on SDKのソースコードを少しハックしたところ、若干の手作業を付け加えることで Add-on Builderで作成した拡張機能をローカライズ(多言語化)することに成功しました。
ということで、ローカライズ(多言語化)に関する前提知識とローカライズ(多言語化)する方法について説明します。
まず前提知識として、次の2つのドキュメントは必読です。
Add-on SDK - Localization
Add-on SDK - l10n
これらのドキュメントからローカライズ(多言語化)のデータは、拡張機能のルートフォルダ直下の localeフォルダに格納されている "xx-YY.properties"というファイルになっています。
my-addon/ | ||
data | ||
lib | ||
locale/ | ||
en-US.properties | ||
fr-FR.properties | ||
ja-JP.properties |
ところが、Add-on SDKをハックしたところ、実行時には拡張機能のルートフォルダ直下の "locales.json"と拡張機能のルートフォルダ直下の localeフォルダに格納されている "xx-YY.json"というファイルが読み込まれていることが判りました。
my-addon/ | ||
data | ||
lib | ||
locale/ | ||
en-US.json | ||
fr-FR.json | ||
ja-JP.json | ||
locales.json |
ということで、"xx-YY.properties"ではなく、"locales.json"と "xx-YY.json"を Add-on Builderで作成した拡張機能のパッケージ(xpiファイル)に埋め込むとローカライズ(多言語化)に対応した拡張機能になるわけです。
拡張機能のパッケージ(xpiファイル)の実体はZIPファイルですので、拡張子を .xpiから .zipに変更すると簡単にファイルやフォルダの変更ができます。
また、ローカライズ(多言語化)データを別管理にするのは面倒なので、拡張機能の dataフォルダの直下に localeフォルダを作成しておいて、拡張機能のパッケージ内でルートフォルダの直下に移動(コピペ)すると簡単だと思います。(locales.jsonも同様です)
locales.jsonのサンプル(用意されている言語データのリスト):
{"locales":[
"en-US",
"fr-FR",
"ja-JP"
]}
en-US.jsonのサンプル(en-US.propertiesを json化したもの):
{
"test": "test en-US",
"test2": "test2 en-US"
}
以上、ご参考になれば幸いです。
この記事へのコメント