« 炊飯器 | メイン | PSPで動画再生 その4 »

2006年2月12日

'STR#'リソースからLocalizable.stringsへ

カテゴリー: プログラミング

Macのプログラミングでは昔から、アプリケーションの中で使用する文字列を'STR#'リソースなどに書いておいて、それを読み込んで使うのが一般的でした。この方法は今でも有効ですし、Mac OS 9以前のOSをサポートするにはまだまだ必要ですが、Mac OS Xのみの新しいプロジェクトでは、そろそろリソースは廃止したいと考えています。いや、以前から考えていたんですが、面倒でなかなかその気にならなかたっというのが本当のところです(^^;)

先日、ついに重い腰を上げてやってみました。やり方はInside Mac OS X: System Overview(←PDFです)というドキュメントに詳しく書いてありますが、覚え書きを兼ねてまとめておきたいと思います。

Mac OS Xでは、アプリケーションのパッケージ(バンドル)の中のLocalizable.stringsファイルを使うのが定石のようです。ファイルの構造も上記のドキュメントに書いてあります。Carbonアプリケーションの場合、このファイルから読み込むにはCFCopyLocalizedString()というAPIを使います。CFString関連の処理は個人的にまだ馴染めないものが多いのですが、とりあえず読み込むだけなら簡単ですね。ただ、この関数の第2引数の意味はよく分かりません。NULLにしておいて問題ないようですが、どういう用途で使うんだろう?(^^;)

また、Localizable.stringsから読み込んだ文字列はCFStringになるので、実際にその文字列を使用する部分も手直しが必要です。CFStringをPascal文字列に変換して使うのでは芸がなさすぎるので、ここもCFStringのまま使用するようにしたいものです。いちばん多いのはエラーメッセージなどのアラート表示ですが、これは従来のStandardAlert()のかわりに、CreateStandardAlert()とRunStandardAlert()のペアを使えばOKです。パラメーターなどもほとんどそのまま使えるので簡単ですね。試してはいませんが、CreateStandardSheet()というシートウィンドウタイプもあるようです。


こういう古いやり方をやっている部分は他にもまだまだあると思うので、徐々に新しいやり方を覚えていきたいですね。1/19の日記で書いた警告も減らしたいし(^^;)



コメント

よろしければコメントしてください。

※メールアドレス以外の項目はこのページ上に公開されます。個人情報などの入力にはご注意ください。




保存しますか?


「投稿」ボタンを押してから書き込み完了までに多少時間がかかる場合があります。ご了承ください。