Lightroom SDK でプラグイン名やメニュー項目名などをローカライズをする方法
Lightroom SDK 6.0でローカライズの設定でハマりました。ローカライズというのは同じプラグインモジュールで複数言語の表示機能を持たせることです。
自作プラグインをローカライズして、表示できる言語を増やしておけば、よりたくさんの多国籍のユーザーに使って貰うことができる訳です。
例えばプラグイン名とメニュー項目名でローカライズ方法を見ていきます。
目次
Info.lua
これらを定義するのが Info.lua ファイルです。
プラグイン名だと以下の様に書きます。サンプルです。LrPluginNameがプラグイン名を現す変数名です。
LrPluginName = LOC "$$$/Example/PluginName=Sample Plugin",
続けてライブラリメニューに表示する項目のサンプルコードです。titleがメニューに表示される名称です。
LrLibraryMenuItems = {
{
title = LOC "$$$/Example/xxxMenuName=Generate photo page",
file = "xxx.lua",
},
},
LOC の後に “”でくくって $$$/ で始めて好きなパスと、好きな名前と続けて = の右がデフォルト値です。
デフォルト値というのは、後述する翻訳ファイルを用意していなかった際に表示される名前です。なので通常は英語で書くのがいいと思います。
ローカライズ用の翻訳ファイルを用意
ファイルの名前が決まっています。日本語ならばTranslatedStrings_ja.txtです。英語ならTranslatedStrings_en.txt、フランス語ならTranslatedStrings_fr.txtといった様に、TranslatedStrings_**.txtに言語記号をつけてやります。
中身はというと、上記例の場合 LOC の右側だけを列挙したテキストファイルになります。
"$$$/Example/PluginName=サンプルプラグイン"
"$$$/Example/xxxMenuName=フォトページ生成"
私には、テキストファイルの中身までも””でくくり、$$$/で始めるのがしっくりこないのですが、この様にLOCの右側をそのままコピペして、=の右に翻訳文を書けばOKというわけです。
ファイルの配置場所
プラグインフォルダの直下。つまりInfo.lua ファイルと同じ場所です。他のファイルを省略すると以下のフォルダ構成となります。
プラグインディレクトリ
├ Info.lua
├ TranslatedStrings_en.txt
├ TranslatedStrings_fr.txt
└ TranslatedStrings_ja.txt
プラグインマネージャにも日本語名が表示されるハズなのですが・・・
私がハマったのはここです。
作成したプラグインを Lightroom のプラグインマネージャで読み込むのですが、そこに表示されるプラグイン名が info.luaに定義したデフォルト値の名称だったのです。
いったん削除して追加してを繰り返しても変わらず。ローカライズが正しく動いていない、配置場所などどこか定義を間違っているのだと思いました。
ファイル名を換えたり、置く場所を変えたり、=の左辺をいろいろ試してみたり、”でくくるのを止めてみたり・・・。
Lightroomを再起動したらローカライズされていた
いったんローカライズは諦めて、一番有力そうな設定にしておき、プラグインの開発を進めていたところ、メニューを足してLightroomを再起動したところで、ローカライズが効いて日本語表示になっていることに気付きました。
その後確認したところ、プラグイン読み込み時点ではデフォルト表記で、いったんLightroomを再起動すればローカライズが効き始めることが分かりました。 Lightroom 6 でも Lightroom 5 でも同様の動きでした。