OS Xインストールパッケージのローカライズ

OS Xの標準インストールパッケージ生成は、説明がやっつけ極まりないApple魔境の一つである。お仕事でインストールパッケージのローカライズが必要になったのだが、そのための方法がまったく説明不足でやたらに苦労させられた。以下そのまとめ。

ここで使用するのはコマンドラインツールのproductbuildである。

productbuildはインストールしたいアプリケーションなりサブパッケージなりを一つのパッケージにまとめてインストール用のpkgファイルを生成する。この時インストーラの挙動をカスタマイズする為のdistributionファイルというのを指定するわけである。

さて、distributionの中ではライセンス情報やREADMEのファイル指定ができるわけだが、これをローカライズしたければman productbuildの指定にあるように–resourcesオプションでリソースルートを指定し、中にEnglish.lproj, Japanese.lproj…というような各国語別のリソースを用意してやればよい。これで大体の箇所はローカライズできるのだが、例えばアプリケーションによっては各国語別で名称も変わってくることがあるだろう。純正品でいえば、Contact/連絡先、みたいなやつ。

パッケージのタイトルはREADMEのような外部ファイルではなく、distributionのtitle要素に直接値を指定するため同じ方法が使えない。そしてスキーマ仕様にローカライズできるとは書いてあるのだが、どうすればローカライズできるのかどこにも説明がない

結論から言うと、アプリケーションの標準ローカライズ手法同様に、Localizable.stringsファイルをリソースフォルダに用意して、その中のキーを参照すればよい。具体的にはこんな感じ。

distribution.xml:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<installer-gui-script minSpecVersion="1">
    <title>INSTALLER_TITLE</title>
    <pkg-ref id="ident"/>
    <license file="License.txt"></license>
    ....
</installer-gui-script>

Localizable.strings:

INSTALLER_TITLE = "インストーラの名前";

distributionのスキーマ仕様でLocalizableと書いてあるものはこれと同様である。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です