none
ローカライズ切替えでデザイナが破損してしまう RRS feed

  • 質問

  • 初投稿です。

    表題の件で少し困っていますので、

    ご存知の方がいれば知恵を貸して頂けないでしょうか。

    現在携わっているプロジェクトのアプリケーションですが、多言語対応の為にローカライズを切替えてコントロールの文言を設定していました。

    最初は問題無く設定が出来ていたのですが、

    いつからかローカライズを切替えるとそのフォームのデザイナが壊れるようになりました。

    具体的には以下のようになります。

    [操作]

    1. デザイナでローカライズを(規定値)から変更する(どの言語にしても発生する)
    2. 変更した言語でコントロールのプロパティを変更する
    3. ローカライズを(規定値)に戻す

    [状態]

    ローカライズを変更したフォーム内の全てのコントロールに、

    • (コントロール名).ImageKey = grobal::(名前空間).Properties.Resources_en_US.String1;

    が挿入されます。

    ツールチップを設定していないコントロールには、

    • toolTip.SetTooltip((コントロール名), grobal::(名前空間).Properties.Resources_en_US.String1);

    この1行も挿入されます。

    また、稀に全てのコントロールの配置がバラバラになることもありました。

    中国語に変更しても、ドイツ語に変更しても、Resource_en_US.String1が挿入されます。

    英語リソース内にString1の記述はありません。

    発生当初はデザイナを直接編集して挿入される記述を消していたのですが、

    編集する全てのフォームを書き換えるのは効率も悪く、

    根本的な原因の解決が図りたいと思い質問させて頂きました。

    宜しくお願いいたします。


    2013年1月28日 6:53

回答

  • デザイナが生成したコードに global::(名前空間).Properties.Resources.String1 が入り込む現象はいくつかあるようですが、どれも根本的な原因は不明のようです。ただ、ローカライズとは直接は関係なさそうです。

    Visual Studio C# Winform Designer is creating strange code for control members? http://stackoverflow.com/questions/12714837/visual-studio-c-sharp-winform-designer-is-creating-strange-code-for-control-memb

    Resources.String1 referenced in code generated code, yet this resource does not exist http://www.devexpress.com/Support/Center/p/Q205184.aspx

    ところで、Properties.Resources_en_US は、プロジェクトの Properties フォルダ直下にあるテンプレートで用意された Resources.resx と関係がありそうですが、こちらは使用されているのでしょうか。使用されていないのであれば、削除するか Resources.resx のプロパティに設定されているカスタムツール (ResXFileCodeGenerator) をなしにする、というのはどうでしょうか。ただし、プロジェクトがビルド負荷や修復不可になる可能性もないとは言い切れないです (無保証) 。

    2013年2月22日 9:38

すべての返信

  • デザイナが生成したコードに global::(名前空間).Properties.Resources.String1 が入り込む現象はいくつかあるようですが、どれも根本的な原因は不明のようです。ただ、ローカライズとは直接は関係なさそうです。

    Visual Studio C# Winform Designer is creating strange code for control members? http://stackoverflow.com/questions/12714837/visual-studio-c-sharp-winform-designer-is-creating-strange-code-for-control-memb

    Resources.String1 referenced in code generated code, yet this resource does not exist http://www.devexpress.com/Support/Center/p/Q205184.aspx

    ところで、Properties.Resources_en_US は、プロジェクトの Properties フォルダ直下にあるテンプレートで用意された Resources.resx と関係がありそうですが、こちらは使用されているのでしょうか。使用されていないのであれば、削除するか Resources.resx のプロパティに設定されているカスタムツール (ResXFileCodeGenerator) をなしにする、というのはどうでしょうか。ただし、プロジェクトがビルド負荷や修復不可になる可能性もないとは言い切れないです (無保証) 。

    2013年2月22日 9:38
  • 回答ありがとうございます。

    貼って頂いたサイトと似た様な現象ですが、ローカライズが絡んだ別の現象な感じがします。

    どうにも腑に落ちない動作です。

    ところで、Properties.Resources_en_US は、プロジェクトの Properties フォルダ直下にあるテンプレートで用意された Resources.resx と関係がありそうですが、こちらは使用されているのでしょうか。使用されていないのであれば、削除するか Resources.resx のプロパティに設定されているカスタムツール (ResXFileCodeGenerator) をなしにする、というのはどうでしょうか。ただし、プロジェクトがビルド負荷や修復不可になる可能性もないとは言い切れないです (無保証) 。

    Resources.resxは使っています。

    カスタムツールをなしにすると修正箇所も膨大になってしまうので、現実的ではありません。

    折角提案頂いたのに申し訳ありません。

    投稿から随分時間が経過しているのにも関わらず回答がほぼないので、

    ここで回答は締め切って本件はMicrosoftに不具合として報告しておきます。

    ご協力ありがとうございました。

    2013年2月28日 11:10