2017-09-28 15 views
0

に、私は別々のプロジェクト内のすべての私のリソースを持っていると、このプロジェクトは、その中に3つの言語のリソースフォルダを持っているがあり、それについて多くの質問がありますが、まだ私ローカライズはリサイズ

のためのソリューションを読んでいません。すべてが正常に動作しますが、今、時々ラベルが小さすぎる

public void InitializeLanguage() 
    { 
     bOK.Text = Lastenboek.Language.Ok; 
     cbSM.Text = Lastenboek.Language.SamenvattendeMeetstaat; 
     cbDM.Text = Lastenboek.Language.DetailMeetstaat; 
     cbDMHeadingStyles.Text = Lastenboek.Language.KopStijlen; 
     cbExportArtikelsZonderMeetstaat.Text = Lastenboek.Language.ArtikelsZonderMeetstaat; 
     cbSMHeadingStyles.Text = Lastenboek.Language.KopStijlen; 
     cbRamingsPrijs.Text = Lastenboek.Language.Ramingsprijs; 
     cbBeknopteOmschrijving.Text = Lastenboek.Language.BeknopteOmschrijving; 
     cbFaseSM.Text = Lastenboek.Language.GesplitstOpFase; 
     groupBox3.Text = Lastenboek.Language.Filter; 
     label2.Text = Lastenboek.Language.Tot; 
     label1.Text = Lastenboek.Language.DatumVan; 
     gbPrijzen.Text = Lastenboek.Language.Prijzen; 
     label3.Text = Lastenboek.Language.Account; 
     cbTotaalSM.Text = Lastenboek.Language.Totaal; 
     groupBox4.Text = Lastenboek.Language.Template; 
     label4.Text = Lastenboek.Language.Layout; 
     Text = Lastenboek.Language.ExporteerMeetstaat; 
    } 

:私はこのような権利言語のための右のテキストを設定し、私はコンストラクタでInitializeLanguage(への呼び出しを持っている任意のコントロールで

) 他の言語のテキストの場合デザイン時に言語を変更し、さまざまな言語のディメンションを変更する良い方法はありますか?

+0

Label.Autosizeプロパティを試しましたか? [Label.AutoSizeプロパティ](https://msdn.microsoft.com/en-us/library/system.windows.forms.label.autosize(v = vs.110).aspx) – rmjoia

+0

これらはすべてオートサイズに設定されていますが、彼らは他のコントロールと重複しています – Sennevds

+0

あなたはいつもTextBox.Text.Lengthプロパティを取得し、幅を調整することができると思います.. – rmjoia

答えて

1

はい。また、ローカライズされたテキストや画像などの値をプログラムで設定する必要もありません。

フォームのLocalizableプロパティをtrueに設定するだけで、デザイン時に言語を切り替えることができ、デザイン時にその言語のすべてを編集することができます。

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

+0

これはオプションですが、フォームまたはコントロールごとにresxファイルがあります。 私は他のプロジェクトの1つの別個のresxファイルに1つの言語用のすべてのリソースを持っています – Sennevds

+0

もちろん、それはローカライゼーションの好ましい方法です。それらはアセンブリにコンパイルされるため、.resxファイルを展開する必要はありません。 – taffer

+0

確かに私は問題を抱えています。設計時に言語を変更することはできず、言語ごとのサイズと場所を変更することはできません。 – Sennevds

1

問題は、コントロールのダイナミックテキストがありますが、すべての言語に対して "ハードコード"固定コントロールサイズを使用することです。

この手法を維持することは複雑になる可能性があります。翻訳のすべての変更はUIでテストする必要があります - それはコントロールに適合するかどうかです。

もう1つの方法は、コントロールの "AutoSize"をサポートすることです。 WinFormsにはTableLayoutPanelコントロールがあります。これは、動的テキストのコントロールに役立ちます。

+0

+1は、 "TableLayoutPanel"に言及しています。これは、MSFTがローカリゼーションを推奨しています。 「方法:AutoSizeとTableLayoutPanelコントロールを使用してWindowsフォームでローカライズをサポートする方法」(https://msdn.microsoft.com/en-us/library/1zkt8b33(v=vs.90).aspx)を参照してください。実際には、あなたの頭を包み込むために何らかの努力が必要ですが。それを仕事にしたり、他のプロパティと組み合わせたりすることは、イライラする可能性があります。それは仕事をします(ほとんどの場合)。 – Larry