最近、アプリケーションに4つの言語を追加することにしました。私はそれを行う方法について読み、成功しました。
しかし、私が聞きたい2つの問題/質問があります。
最初の質問:代わりに各コントロールのテキストを変更するより良い方法はありますか
private System.Resources.ResourceManager rm;
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr");
rm = new System.Resources.ResourceManager(typeof(MainForm));
次に、各コントロールがこの行を書き込むために:
aboutToolStripMenuItem.Text = rm.GetString("aboutToolStripMenuItem.Text");
addTaskToolStripMenuItem.Text = rm.GetString("addTaskToolStripMenuItem.Text");
addTaskToolStripMenuItem1.Text = rm.GetString("addTaskToolStripMenuItem1.Text");
...
2番目の質問:label1のテキストが「test」で、他の言語では「testest」であるとすると、ラベルのサイズが変わります。これで問題ありません。しかし、彼の場所がlabel1の近くにあるlabel2を取得した場合、label1はlabel2の一番上にある可能性があります。label1をlabel2と比較して移動するにはどうすればよいですか。したがって、label1のテキストの長さに関係なく、label2の位置はlabel1を基準にしています。プログラムで計算を使用したくありません。コントロールの1つにプロパティのような他の方法があるかどうかを知りたいです。
編集:長い間考えた後、私は多言語にXMLを使用することにしました。このようにして、人々に翻訳してアップロードしてもらうことができます。さらに、代わりに実行時に使用したり、プログラムをリロードしたりできます。
使用するコントロールの相対的な位置について、FlowLayoutPanelまたはTableLayoutPanelどちらが優れているかをさらに確認します。