- - PR -
何が作られたのか
―多言語対応のリソースファイル―
今回作成した「メッセージ表示」という文字列リソースはどこに格納されているのでしょうか。連載第4回「Symbian流“日本語表示”と“文字列操作”」では、
<プロジェクト名>.rlsファイル
というルールでリソースを格納するファイル名が存在し、そこに文字列が保存されると説明しました。では、「Project Explorer」でプロジェクト配下の「data」フォルダを開いて、ファイルの有無を確認してみましょう。このフォルダがリソースの格納先です。

図10 リソース一覧
「.rls」ファイルは存在せず、その代わりにいくつかの怪しいファイルが見つかります。「BlankGUI」はプロジェクト名ですね。そのプロジェクト名に対して「.rss」「.loc」「.l32」と3種類の拡張子のバリエーションが存在します。「.rss」のファイルの役割は連載第4回で説明した
「.rssファイルはリソースの論理的な構造と、C++ソースからアクセスする名前の根拠を定める」
のとおりです。
では、「.loc」と「.l32」はどうかといえば、これが「.rls」ファイル相当の役割を担っています。ここで「BlankGUI.loc」を開いてください。
図11 「BlankGUI.loc」
やっていることはといえば、条件コンパイルで#includeの有無を制御しているだけですが、そのフラグは看過できません。「LANGUAGE_32」とはすなわち、日本語であれば、という条件コンパイルではないですか。“32”は日本語を意味するのでしたよね(ピンとこない方は前述のTLanguageの定義をもう一度見てください)。つまり、「.loc」ファイルの役割とは、コンパイル時の言語設定に合わせてリソース実体を切り替えることであるといえます。すると、「.l32」ファイルの役割もおのずから明らかになります。こちらの方は言語別に用意されたリソースの実体を定義することがその役割です。より汎用的にルールを書けば、
「.l+<言語ごとの識別コード>」という拡張子を持つファイルは、
その識別コードで表される言語のリソースを定義する
となります。
ただし、「BlankGUI.l32」を開いても、そこに「メッセージ表示」というリソースを見つけることはできません。
実はこのリソース、「BlankGUIContainer.l32」の中に定義されています。そして、そのファイルの名称である“BlankGUIContainer”はこのアプリケーションのコンテナ名を意味しています。UI Designerを開くときにクリックしたコンテナ名を思い出してください(先ほどクリックしてもらったものは正確には「BlankGUIContainer.uidesign」ですが)。
このコンテナ名に対して「.rssi」「.loc」「.l32」の拡張子を持つ3種類のファイルが存在します。「.rssi」はそのコンテナに関する分の「.rss」ファイルだと思ってください。「.loc」および「.l32」はそのコンテナから使われる言語別のリソース定義です。今回のメニュー追加は「BlankGUIContainer.uidesign」を通じて開いたコンテナに対して行いました。だから、そのコンテナの言語別リソースファイルである「BlankGUIContainer.l32」に実体が保存されるのは筋が通っていますね。
>>気を付けてほしいのは、「.l32」のファイルはUTF-8でなければならないということです(理由は連載第4回を参照)。Carbide.c++は自分自身が作ったファイルであるにもかかわらず、「.l32」のファイルがCP932であると勘違いすることがあります。「.l32」のファイルを直接開いたときに画面表示が乱れていることがあれば、そのファイルの[Properties]から文字コードを明示的に指定してください。
このようにCarbide.c++ v2.0では「.loc」ファイルと、「.l+<言語ごとの識別コード>」ファイルを用いて多言語用のリソースを管理しています。では、従来型の「.rls」ファイルでリソースを管理したい場合、またほかの言語を追加で支援したくなった場合はどうすればよいでしょうか? 今回の締めくくりとしてその方法をお伝えします。
図12 アプリケーションのリソース設定を開く
(1)「Project Explorer」から「application.uidesign」をクリックして開きます。すると画面中央に「Overview」とタイトルの付いた画面が出てきます。(2)その画面の下にあるタブから「Languages」を選んで表示を切り替えてください。画面上部には言語を追加するための[Add...]ボタンが、画面下部には「.locと.l+<言語ごとの識別コード>による方式」と「.rlsによる方式」を切り替えるためのラジオボタンが存在します。
ここで言語種別を追加すると、次回のビルドからその追加された言語用のリソースも含んだインストールパッケージが生成されることになります。このようにCarbide.c++ v2.0では多言語対応アプリケーションの作成が容易に行えるようになっています。
◇
いかがでしたでしょうか? 今回はS60関連の新機能と、Carbide.c++の最新バージョンの紹介をしつつ、GUIアプリケーションの入り口までやって来ました。次回はさらにその先に進んで「コンテナに対するUI部品の張り付け」について解説したいと思います。お楽しみに!(次回に続く)
組み込み開発フォーラム 新着記事
- フルスクラッチの“Hello World”を動かしてみよう(2011/3/31)
- FlexRayプロトコルの概要(その2)(2011/3/29)
- JASA、東北地域に拠点を置く会員企業を支援(2011/3/25)
- NEC、震災の影響を受けた4拠点の生産再開を発表(2011/3/23)
- 内部ブロック図の基礎と共通要素(2011/3/22)
- インテル、被災地におけるITインフラの復旧を支援(2011/3/22)
- Facts on AUTOSAR/AUTOSAR導入の現実(2011/3/18)
- 計測器・震災被害ホットラインを開設、テクトロニクス(2011/3/18)
- ZMP、地震の揺れを多角的に計測するアプリ無償配布(2011/3/16)
- メンター、3Dテレビ・マルチメディア検証プラットフォーム(2011/3/16)
- 【番外編】タチの良い計測値、悪い計測値とは?(2011/3/15)
- tarファイルシステムをAndroidに組み込む!!(2011/3/10)














