0

私は、コンテナで整理され、UI(つまり「テキスト」プロパティ)を翻訳したいと思う多くのコントロールを含むウィンドウを持っています。CultureUI情報を使用したテキストの自動翻訳

どのような方法が最適ですか?

フォーム内のすべてのコントロールを反復しようとしましたが、各コンテナがその子にアクセスする方法が異なるため、問題が発生しました。

もっと洗練された方法がありますか?私は既に異なる文化でResourceManagerを使用していますので、私が自分の目標に使うことができれば素晴らしいでしょう。

EDIT: 私の問題は、「コントロール」ではなく「アイテム」プロパティを使用してそのアイテムにアクセスできるような、MenuStripコントロールのため再帰を使用できないということです。 StatusStripコントロールも同様です。

私の解決策を投稿しましたhttps://codereview.stackexchange.com/questions/721/automatic-translation-of-forms - あなたのレビューを聞いてみたい!

+1

フォームのビルトイン機能です。 LocalizableプロパティをTrueに設定します。言語を変更し、テキストのプロパティを変更します。それ以外の方法は間違いです。 –

+0

「テキストプロパティを変更する」とはどういう意味ですか?手作業で各文字列を調べ、それを翻訳と置き換えますか?それはまさに私が避けようとしていることです... – liorda

答えて

1

あなたがする必要がすべては2つのステップです: 1 - trueにフォームのローカライズプロパティを設定します。 2 - フォームの言語を目的の言語に設定し、テキストプロパティを編集します。 - デフォルトでは、言語は(デフォルト)に設定されています。言語をスペイン語、日本語などの特定の言語に設定する必要があります。言語の設定時には、生成された言語用の.resxファイルを取得するために何らかの変更を加える必要があります。これで作業が完了したら、フォームの言語を別の言語に設定し、コントロールのテキストプロパティを変更する必要があります。

上記の手順を実行すると、言語ごとに1つのリソースファイルがあり、OSの文化/ロケールを変更するときに自動的に読み込まれます。

0

フォームのすべてのコントロールを反復処理するには、再帰が必要です。いくつかのフォームメソッドで "Walk(this)"を配置すると仮定すると、以下のコードは各コントロールをチェックします。

static void Walk(Control control) { foreach (var c in control.Control) Walk(c); }

関連する問題