会社ではBorlandのC++Builderなるツールを使用しています。
で、作成しているアプリケーションは英語での使用も考慮しますので、
日本語と英語を自動的に切り分けられるようにします。
いえ、別々の実行ファイルにしてもいいのですが、インストーラの作成
がちょっと面倒になりますし、プロジェクトを2つメンテナンスしなけれ
ばならないなど、デメリットが多いのです。
で、リソースDLLウイザードなるシステムを使用して作りわけをサポート
してもらい、プログラム中で使用する文字列だけを作りわけすればいい
ようにしていました。
具体的には、Captionなど文字列をすべて、LoadStrでリソースから
持ってくるようにします。
で、そのリソースは、resource.hにグローバル定数を宣言し、
Message.rcファイルにその定数と実際の文字列を定義します。
resouce.hはこんな感じ。
#define IDS_FORMCAPTION 1
Message.rcはこんな感じ
#include "resource.h"
STRING DISGARDABLE
BEGIN
IDS_FORMCATPION "フォームへの文字列"
END
で、Message.rcをプロジェクトに登録すれば、リソースDLLウイザードで、
国際化対応用のファイル類(フォームとこのMessage.rc)をカレントフォルダ
以下に国際化用フォルダ(日本語がターゲットならJPN)を作ってコピーして
くれます。
あとは、このフォームやrcファイルを翻訳するだけで、あっという間に国際化
対応プログラムの完成。
だったのですが、なにか去年の3月ごろ突然このリソースDLLウイザードが
使用できなくなってしまいました。
ネットに情報はほとんど無く、しかし、いつか手がかりが見つかるだろうと
思い、LoadStrによる文字列表示はし続けました。
で、本日その対応方法を見つけました。
以前、リソースDLLウイザードを使用していた残骸を見て気がついたのです。
まず、DLLウイザードでプロジェクトをひとつ作ります。
保存先は、リソースDLLウイザードと同じように、ロケール文字3文字の
フォルダを対象としたいプロジェクトのフォルダ以下に作ります。
それようのcppの中身を全部削除して、以下のような行にします。
これは使用しているすべてのフォームを記述します。
その後、使用しているフォームのdfmをコピーします。
コメントする