2017-10-15 10 views
0

私はアプリケーションを翻訳する簡単な方法を作ろうとしています。 私はおそらく、Graphicsクラスをオーバーライドして、テキスト描画レベルでDictionaryを使ってフォームを翻訳することができると考えました。 また、RightToLeft言語をサポートする場合と同じ方法で描画ポイントを編集します。 誰かが良いアイデアを持っていますか?テキスト描画レベルでの書式言語の翻訳は可能ですか?

答えて

0

Graphicsクラスをオーバーライドして、テキスト描画レベルでDictionaryを使用してフォームを翻訳することは可能かもしれないと考えました。

Graphicsクラスはオーバーライドできません。コントロールのOnPaintメソッドをオーバーライドすることができます。しかし、どのように他の図面からテキストの図を分離するでしょうか?たとえば、誰かがTextのプロパティを読み取った場合、どうなるでしょうか?

誰かが良いアイデアを持っていますか?

はい、ローカリゼーションには組み込みのソリューションを使用してください。フォームのLocalizableプロパティをtrueに設定するだけです。デザイン時に言語を切り替えることができ、テキストだけでなくRightToLeftのプロパティ、サイズ、基本的にすべてのデザインタイムにその言語のすべてを編集できます。

アプリケーションを起動すると、フォームはWindows言語を使用するか、不変言語に戻ります。プログラムで言語を変更する場合は、Thread.CurrentThread.CurrentUICultureプロパティを設定するだけです。フォームを再度開いて言語を適用したり、InitializeComponent()を明示的に呼び出すことができます。

+0

これは面白い方法です、私はそれをチェックアウトします。あなたの質問のために、私は、Textプロパティが元のままになるように出力をディスプレイに変換することを意味しました。 – user6466445

+0

これは非常に誤解を招く恐れがあり、すべての条約に欠けています。 Btw 'Text'プロパティがコントロールのテキストを返すのはなぜですか?静的なものが必要な場合は、 'Name'プロパティがあります。また、カスタム目的のために' Tag'を使用することもできます。 – taffer

+0

Textプロパティを変換している場合、元の値を返すことができず、いくつかの状況(たとえば、オプションリスト付きのComboBox)で問題が発生する可能性があります。再描画によっていつでも簡単に言語を変更することが可能になります。 – user6466445

関連する問題