ページ

2013年7月23日火曜日

Visual Studio 2010 多言語対応時、デザイナーでエラーが発生する!

Visual Studio 2010 で作成したWindow Form アプリケーションを、中国語対応することになったので、いろいろとやり方を調べた。

既存ソースで試すのは不安だったので、新規アプリケーションを作成し、FormのLocalizableプロパティを「True」に設定し、Languageプロパティを「中国語」に設定してみた。

あれ?
Form.zh.resxができると思いきや、できないではないか。

で、わかったことは、この時点では自動作成されない。
Form上のコントロールのTextを変更するなど、デフォルトの設定との違いが発生した時点で、自動作成される。
また、違いのある箇所だけ、Form.zh.resxにリソースが追加される。

フー。
無事作成された。

参考サイト:Windowsフォームを多言語対応にするには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/314winmultilang/winmultilang.html


Form上のコントロールはこれでよいか、MessageBoxのメッセージ文字列は直接コード上にあるので、どうすぺきかを調べた。

どう考えてもメッセージ文字列をResourceファイルにしておく必要がありそう。

参考サイト:
C#でのアプリケーション設定の取得・保存方法
http://d.hatena.ne.jp/seraphy/20120708

多言語対応アプリ作成
http://hshimaji.web.fc2.com/mui/project.html


で、上記2点の作業を本番のアプリケーションソースに修正を加える。


順調に作業を進めていたが、ところがどっこい。
デザイナでエラーが発生した。


少々パニック。
ソースを元に戻しても、発生する。


よくよく調べると、Form.Designer.csの中で、Form上のコントロールのプロパティ[ImageKey]に、メッセージ文字列をリソース化した際の文字列の名称を代入しようとして、エラーになっている。

ご丁寧に、すべてのLabelとButtonの[ImageKey]プロパティーに代入しようとしてくれる。

この仕様は不具合なのか良くわからない。

とにかく、このままではコンパイルもできないので、Form.Designer.csの中の[ImageKey]プロパティーに、不要な代入をしようとする記述を削除する。

何とかデザイナー編集が表示されるようになった。


しかし、またデザイナー編集で、コントロール上のテキストを変更すると発生する。
なんだこれは!



0 件のコメント:

コメントを投稿