VC++で多言語表示

[戻る]
りある 2005/04/19(火) 16:10:48
mdbにスペイン語mdb・フランス語mdbをつくっておき
VC++で取得してメッセージ表示。リアルタイムに変更したいのですが
特殊な文字(çやñ)がうまく表示できません。
なにかいい方法を知っていましたらお知らせ下さい。

試しにその文字をソース内に固定値で記述しようとしても文字化けしてしまいます。

環境は、VC++6.0(日本語版) WINDOWSXP(日本様) です。

どなたか判る方いらっしゃいましたらアドバイスお願いします。

KING・王 2005/04/19(火) 17:55:30
実行する環境にフォントが必要かもしれませんが、
UNICODEで作成すれば、できませんか?

UNICODEについては、私も詳しくありませんが、MSDNなりぐぐるなりすれば、
色々と見つかるとおもいますよ。

wood 2005/04/20(水) 01:20:59
回答じゃないよ
>特殊な文字(çやñ)がうまく表示できません。
>試しにその文字をソース内に固定値で記述しようとしても文字化けしてしまいます。
って!
どんなソースコードや関数書いたの?(SetWindowTextとか)
表示場所はどこ?(コンソール、ウィンドウ、コントロール、ファイル)

うまく表示できない!って
どんな風に?(こける、エラーダイアログ出る、文字化け、???)

りある な表現(質問)したほうが良いのでは?

伊藤 2005/04/27(水) 18:24:06
当方は仕事柄多国語表示のアプリケーションを作成していますので参考になれば…
但し、これが一般的な方法か否かは怪しいです。
基本的にunicodeで表示させれば多国語表示可能なアプリケーションになります(少なくと
も日/中/韓/英…は出来てる)。
我々の実装は次の様になっています。
1) アプリケーション上で表示される多国語対象の文字列は当然プログラム中には書きま
せん。アプリ起動時に自分が立ち上がったOSのロケーションなりアプリ独自の設定値によ
り、いずれかの言語ファイルから文字列を取り込みます。
言語ファイル内の文字列自身をunicodeで記述する必要はありません(翻訳会社などに依頼
する場合unicodeで返してくれと言っても難しい事が多いです)。例えば中国語なら
gb2312、台湾語ならbig5などが一般的だと思います。フランス/ドイツ/スペイン語などで
用いられる特殊文字はiso-8859-9あたりを採用しておけば出ると思います(トルコ語は-9
だった)。
これら多国語ファイルを操作するために当方はMeadowと言うエディタを別途用意していま
す。
2) ファイルのフォーマットは、
STR_YES     はい
STR_NO      いいえ
STR_NAME    名前
と言った具合にキーワードと文字列を1行として配置しています。この文字列の部分がそ
れぞれの国のファイル事に違うわけです。例えば、英語版なら
STR_YES     Yes
STR_NO      No
STR_NAME    Name
みたいになります。
3) アプリケーションは起動時に上記ファイルから文字列を取り出し、予め用意したTCHAR
型の配列変数に取り込みます。この時にMultiByteToWideCharでunicodeとして取り込んで
います。
str[STR_YES] ← "はい"
str[STR_NO]  ← "いいえ"
str[STR_NAME] ← "名前"
4) プログラム内で文字列表示する部分は全て、このTCHAR型の配列で記述しておきます。
DrawTextEx(hdc,str[STR_YES],-1…); みたいに。
5) 当方は、クライアント領域内のコントロールだけではなく、メニューやダイアログ等
に表示する文字列も同様にプログラムで多国語を切り替えています。
ここはもしかしたらリソースを切り替える方が良いのかも? しれませんが、あなたが困っ
た様にリソース内に中国語の漢字などを書き込む手段や更にアプリケーションが起動中に
リソースを切り替えれる? れるのか不明だったので諦めました。^^;

古いスレッドには追加発言できません。