環境 VS2005, XP
多言語対応ソフトを作ろうとしています。
MFCライブラリをスタティックで持とうと思っています。
すると、日→英などの言語切り替えは動的にできないのでしょうか?
スタティックにするとライブラリが日本語、英語でそれぞれ
切り替えられないと思っているのですが、実は可能なのでしょうか?
それとも他に方法があるのでしょうか?
すいません意味がわかりません。
すみません。
staticにするとビルド時しか言語切り替えができないので
StringTableの日本語→英語の切り替えをどうしたものかと思っています。
切り替え、という文言をどういう意図で使っているのか読み取れないけど
1つの実行形式バイナリーを作って、それに対し特に何も設定せず自動で
英語OS上で走らせると英語のメッセージが
独語OS上で走らせると独語のメッセージが
日本語OS上で走らせると日本語のメッセージが
出る、ということであるなら、リソースの[コピーの挿入]するだけだよ
(自分で作ったリソースに限る)
スタティックリンクしてしまうと AfxMessageBox などの
MFC 側が用意したリソースは言語が固定されてしまったはずだけど
自作リソースなら自動で使い分けてくれるはずだ
# 俺はダイナミックリンクしか使わないのでスタティックリンクでは未検証
表示するテキストも文字列リテラルにせず CString::LoadString で取得する
語順の違いは CString::FormatMessage で吸収する
金額や日付表示があれば Currency あたりをきっちり使う
でほぼまったく問題ないはずだ
ちなみに、
上記の話が問題になるのは、日本語OSで英語表示とか、
OSの英語と表示したい言語が異なる場合のみ。
一致する場合は、tetrapodさんの話通りです。
動的切り替えってもしかして
ttp://www.vcppclub.com/samples/gen/p_loctest/loctest.html
こういうことを言ってる?
この場合のMFCライブラリがどの言語が選択されるかとかまでは知らないので
自信で試してみることをお勧めします
tetrapodさん、bunさん、てんてくさん
ありがとうございました。
自分でリソースを作って対応しようと思います。