CoveredCalc の言語ファイルは現在 3 種類あります。Windows 用、BeOS/ZETA 用、ZETA LocaleKit 用です。ZETA LocaleKit 用は ZETA 標準の機能なのでおいとくとして、残りの 2 つは CoveredCalc 独自の形式です。これら 2 つは実質「リソース」形式です。具体的には Windows 用が「リソースDLL」で BeOS/ZETA 用は「リソースファイル」です。
CoveredCalc が言語ファイルを使って UI の言語を切り替えられるようになったのは 1.4.0 からですが、構想自体は最初のバージョンをリリースする前からあり、それに関連する実装の一部も最初のバージョンから入っていました。当初、ダイアログでも文字列でも OS のリソース形式で持っておけばリソースエディタを使って自由に修正できるから便利だろうと考えたためリソース形式になっています。
ここで言語ファイルから少し離れて、BeOS/ZETA 版 CoveredCalc におけるリソースの利用方法に触れておきます。
文字列リソースはそのまんまですが、例えばダイアログなどのリソースは最初は Interface Elements のリソースでした。つまり、BWindow をシリアライズしたリソースです。しかし、独自コントロールをシリアライズしにくいだとか、BTextView のように設定した情報をすべてシリアライズしてくれない中途半端なコントロールが存在したりといったことから、1.3.0 から形式を変更しました。1.3.0 以降は、ダイアログとメニューについては、位置情報や表示テキストについてのみ独自形式の構造体に持つようなリソースになっています。Interface Elements は使えないので、Haiku プロジェクトの成果物であるリソースコンパイラ rc を使ってリソースを作成しています。
さて、1.4.0 で導入した言語ファイルですが、当初の構想どおり本体と同じ形式のリソースファイルになっています。つまり、BeOS/ZETA 用リソースファイルのダイアログについては位置情報や表示テキストが入っています。が、あらためて見てみると、Interface Elements のようなリソースエディタが使えないので誰でも簡単に修正できません。
さらに BeOS R5 や ZETA には標準で含まれない rc を使って作成するため、言語ファイル(リソース)のソースを公開しても、修正のためには rc をビルドする必要があって大変です。
最近、言語ファイルのソースを公開しようとしてドキュメントなどを揃えていたのですが、これは大きな間違いを犯したと気付きました。
少なくとも BeOS/ZETA 用については、言語ファイルの情報をリソースに持つメリットが特にないので、XML 形式に変更しようとしています。
Windows 用についても XML 形式に統一したいですが、ダイアログテンプレートのメリットがあるので、もう少し検討してから‥‥。
CoveredCalc が言語ファイルを使って UI の言語を切り替えられるようになったのは 1.4.0 からですが、構想自体は最初のバージョンをリリースする前からあり、それに関連する実装の一部も最初のバージョンから入っていました。当初、ダイアログでも文字列でも OS のリソース形式で持っておけばリソースエディタを使って自由に修正できるから便利だろうと考えたためリソース形式になっています。
ここで言語ファイルから少し離れて、BeOS/ZETA 版 CoveredCalc におけるリソースの利用方法に触れておきます。
文字列リソースはそのまんまですが、例えばダイアログなどのリソースは最初は Interface Elements のリソースでした。つまり、BWindow をシリアライズしたリソースです。しかし、独自コントロールをシリアライズしにくいだとか、BTextView のように設定した情報をすべてシリアライズしてくれない中途半端なコントロールが存在したりといったことから、1.3.0 から形式を変更しました。1.3.0 以降は、ダイアログとメニューについては、位置情報や表示テキストについてのみ独自形式の構造体に持つようなリソースになっています。Interface Elements は使えないので、Haiku プロジェクトの成果物であるリソースコンパイラ rc を使ってリソースを作成しています。
さて、1.4.0 で導入した言語ファイルですが、当初の構想どおり本体と同じ形式のリソースファイルになっています。つまり、BeOS/ZETA 用リソースファイルのダイアログについては位置情報や表示テキストが入っています。が、あらためて見てみると、Interface Elements のようなリソースエディタが使えないので誰でも簡単に修正できません。
さらに BeOS R5 や ZETA には標準で含まれない rc を使って作成するため、言語ファイル(リソース)のソースを公開しても、修正のためには rc をビルドする必要があって大変です。
最近、言語ファイルのソースを公開しようとしてドキュメントなどを揃えていたのですが、これは大きな間違いを犯したと気付きました。
少なくとも BeOS/ZETA 用については、言語ファイルの情報をリソースに持つメリットが特にないので、XML 形式に変更しようとしています。
Windows 用についても XML 形式に統一したいですが、ダイアログテンプレートのメリットがあるので、もう少し検討してから‥‥。