VB6で開発して以前同類の質問をさせていただきましたがもう一度お願いします。(過去のものは http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200512/05120074.txt)
英語OS+英語VB6で作ったソフトですが使用者にコントロールパネルで地域を英語(US)に変更してもらえばソフト自身は上手く動いています。でも使用者にとっては面倒です。 VBから強制的にDefaultLCIDを変更してしまう方法と言うものを探していますが見つかりません。またIPDKなども検討しましたが対象国が不特定なので英語版1本で何とかしたいと考えています。 この問題に対応できるようなヒントなど教えてください。 また絶対不可能ということならそれはそれで回答をいただければ諦めもつきますのでよろしくお願いします。
そもそもUIが英語版のままでは駄目なのでしょうか?
対応したいと考えているどのロケールにも対応させる手間を
惜しまず、且つ、EXEは1つで対応したい、というのならば、
そういう風に作りこむことでしょうね。
Labelコントロール以外の標準のコントロールのText、Caption
プロパティは、API関数を介せば別のコードページの文字列も
渡すことができます。ですから、その辺りで全てを設定するよう
に作れば十分可能でしょう。
K.J.Kさん、早速ありがとうございました。
>>そもそもUIが英語版のままでは駄目なのでしょうか?
英語で動けば万事解決です。 問題は止まってしまうので悩んでいます。
今、英語環境で作ったものをいくつかのexeを日本語環境で試しているのですが全く問題なく動くものと動かないものがあります。どこのラインで引っかかるのかを調べたいのですがexeなのでデバッグができず行き詰っております。
いただいたアドバイスに
>>Labelコントロール以外の標準のコントロールのText、Caption
>>プロパティは、API関数を介せば別のコードページの文字列も
>>渡すことができます。ですから、その辺りで全てを設定するよう
>>に作れば十分可能でしょう。
>>そういう風に作りこむことでしょうね。
全ての文字を英語にしておきますが、英語環境で「うまく」作れば1つのEXEで各国OSに対応可能と考えて宜しいでしょうか? その際の留意点などのヒントがありましたら宜しくお願いします。
問題の切り分けはできているのでしょうか?
例えば、
「日本語環境だから動かない」
のか
「ランタイムなどのバージョンの不一致で動かない」
のか、というのもありますよね。
VB6の場合、実行コードに関しては使用ロケール間の差異は
ないので、使用している外部DLLなどがロケールに依存して
いない限りは、そうは問題にならないとは思います。
# そもそもIPDK自体がそういうことを利用していますし。
K.J.Kさん、アドバイスをありがとうございました。
原理的にVBで不特定のロケールで動くソフトを作ることの困難さ、ランタイムの不統一などの問題をを認識しつつもう少しやってみます。とりあえず解決サインを入れておきます。 ありがとうございました。
ツイート | ![]() |