タイトル今から始めるCocoaプログラミング》文書ファイルを扱うアプリケーションを作る(19)パッケージ情報とアバウトの国際化カテゴリーユーザインタフェース, Cocoa, 今から始めるCocoaプログラミング
作成日2002/2/21 17:3:59作成者新居雅行
   この記事のPDFファイル(657KB)は以下のアドレスにあります。
   ダウンロードには、MDOnlineのアカウントが必要です。
   pdfs/MDOnline020013.pdf
 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
nibファイルを言語ごとに用意することや、あるいは文字列の置き換えテーブルを使って、言語ごとに異なる文字列メッセージを出すといったことはすでに説明した。国際化関連の作業の残りとして、パッケージ情報の国際化や、あるいはアバウト画面の国際化についても作業をしておこう。

――――パッケージ情報の国際化
アプリケーションパッケージには、Contents/Info.plistに、プロパティリスト形式、つまりXML形式で保存された情報があり、システムはここに設定された内容を調べて、さまざまな動作に反映させるようになっている。このInfo.plistファイルで定義されたものを「パッケージ情報」として総称するが、基本は、ターゲットの編集の画面にある「アプリケーション設定」のタブで設定する。ここではテキストフィールドなどに文字を入れるなどすれば設定ができるが、場合によっては、「詳細表示」にして、階層構造リスト形式で表示すれば、Info.plistとして作られる結果そのものの編集も可能となる。
この、Info.plistによる情報自体を、国際化することができる。つまり、結果的にはパッケージ情報を言語ごとに用意できるということである。そのためには、言語とのリソースとして、InfoPlist.stringsというファイルを用意し、そこに言語に特有の情報を記載する。
プロジェクトには最初からResourcesグループに、InfoPlist.stringsが存在している。この項目を選択して、「プロジェクト」メニューの「情報を表示」(Command+I)を選択し、情報パレットを表示する。ここで「地域情報とプラットフォーム」のポップアップメニューから「異なる地域情報を追加」を選択する。そして、表示されるシートで、追加する言語としてJapaneseを選択すれば良い。つまり、nibファイルの日本語向けのものを用意するのと同じ手順でかまわないということである。

◇InfoPlist.stringsに新たな地域を追加する
 

◇日本語を追加する
 

以上の作業で、InfoPlist.stringsの下位項目がEnglishだけだったのが、Japaneseも増えた。Englishは最初から用意されているが、とりあえずは同じ内容のJapaneseという項目も作られている。これらは、nibファイルと同様で、それぞれEnglish.lprojフォルダのInfoPlist.stringsと、Japanese.lprojフォルダのInfoPlist.stringsファイルとなっている。つまり、Project Builderで見えている階層と、フォルダ階層は逆になっている。

◇英語に対応したInfoPlist.stringsファイル
 

このInfoPlist.stringsファイルでは、Info.plistファイルのXMLタグで言えば〈key〉〜〈/key〉で指定するキーを左に書いて、イコールで結び、その右側に、キーの値を文字列として記述するというのが1つの形態として取りうることができる。たとえば、CFBundleNameというキーに対する値はMOSAEditorという文字列だが、とりあえずはこのキーに対する情報は、Info.plistには含まれていない。したがって、英語のときには、システムはEnglish.lprojのInfoPlist.sringsファイルを参照して、このキーに対する値を取り出す。
一方、日本語に対応したInfoPlist.stringsファイルを次のように書き換えてみた。あまりにベタなカタカナが続くが、どこが変化するかを分かりやすくするために、わざとこうしてみた。CFBunldeNameというキーに対する値は「モサエディタ」としている。

◇日本語のInfoPlist.stringsファイルを編集した
 

日本語のInfoPlist.stringsファイルには、イコールの左右に文字列を記載している行を追加している。これは、プロジェクトの設定にある「アプリケーション設定」で「書類の情報」として設定した文字列を思い出してほしい。そこでは、拡張子とファイルの種類の対応を指定したが、拡張子meditに対して「MOSAEditor Document」という名前を指定した。この定義は、Info.plistファイルに作られている。Productsグループの下にあるアプリケーションのパッケージを開いていってみれば分かるはずだ。Info.plistファイルで定義した内容の置き換えを、InfoPlist.stringsファイルで定義できるのである。つまり、言語が英語の場合はInfoPlist.stringsに特に設定はない。だから、拡張子meditに対する文書の種類を示す名前はMOSAEditor Documentである。だが、このように記述すると、日本語環境では拡張子meditに対する文書の種類名は「MOSAEditor書類」となる。ただし、プログラム中は、言語に関わらず「MOSAEditor Document」で参照できる。
実際にアプリケーションを起動してみよう。アプリケーションメニューの項目は、CFBundleNameで指定したカタカナの名前が見えているが、メニュー項目はたぶん、MOSAEditorのままだろう。これは、メニュー項目自体はnibファイルを修正しないといけないのである。そして、ファイルを保存するとき、ファイルフォーマットのポップアップメニューを見ると、文書の種類はInfoPlist.stringsで指定した文字列になっている。

◇文書の種類を示す文字列が日本語化されている
 

以前に説明したLocalizable.stringsファイルで指定するような文字列の置き換えをInfoPlist.stringsファイルで指定するとともに、XMLファイルのキーに対する値も、ちょうどJavaのプロパティファイルの形式のような記述で付け加えることができるというわけである。

――――アバウト画面の国際化
Cocoaでは、Credits.rtfという名前でリッチテキストフォーマットのファイルを用意しておくことで、アプリケーションメニューの「○○について」を選択したときに、そのリッチテキストの内容などを持つアバウト表示ウインドウを自動的に表示する。もちろん、自分でアバウトのウインドウを凝りに凝って作ってもいいのだが、簡単な手段が用意されているので、とりあえずは手軽なところから対処しておくのがいいだろう。このCredit.rtfについても、nibファイルやInfoPlist.stringsファイルと同じように国際化ができる。これまでに説明してきたのと同じように、日本語のCredits.rtfを用意する。もちろん、Japanase.lprojというフォルダにCredits.rtfという名前でファイルは保存される。

◇日本語のCredits.rtfを編集した
 

こうして作成されたCredits.rtfに日本語を入力するなど自由に編集してよい。もちろん、ワープロなどを使っても良いが、Project Builderでもスタイル付きでのテキスト編集が可能だ。左側で、Credits.rtfのJapaneseの項目を選択し、右側で編集作業を行なえばよい。つまり、ソースと同じということである。このとき、「形式」メニューの「フォント」や「カラーパネルを表示」を選択して、カラーパネルやフォントパネルを出しておいて、色や文字書式の設定ができる。
実際にアプリケーションを起動して、「MOSAEditorについて」を選択すると、次のようなアバウト画面が出てくる。ウインドウサイズは変更できないのであるが、これ以上凝った形式にしたいのなら、やはり自分でウインドウを定義しないといけないだろう。

◇日本語環境で表示させたアバウト画面
 

ここで中心のスクロール部分には、Credits.rtfで作成した文書がそのまま見えているのが分かる。また、トップの画像は、アプリケーションのアイコンが見えている。そして、CFBundleNameで指定した名前、CFBundleShortVersionStringで指定したバージョン名が見えている。ここで(v0.2)と見えているのは、「アプリケーション設定」のタブで設定するバージョン番号で、キーはCFBundleVersionとしてInfo.plistファイルに定義されている情報だ。ウインドウの下部には、NSHumanReadableCopyrightで指定したコピーライト表示が見えている。

∽∽∽∽∽∽∽この項、以上∽∽∽∽∽∽∽[新居雅行]∽∽∽∽∽∽∽
関連リンク