「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
リソース ファイルではなく、国際化(多言語化)辞書テーブルを用いてプログラムでコントロールの表示を国際化(多言語化)することもできる。
国際化(多言語化)辞書テーブルを下記のように設計すると良い。
ID | 画面名 | コントロール名 | 日本語 | 英語 | 中国語 | ・・・ |
1 | xxx | あああ | aaa | 亜亜亜 | ・・・ | |
2 | xxx | yyyy | いいい | iii | 威威威 | ・・・ |
3 | yyy | えええ | eee | 獲獲獲 | ・・・ | |
4 | yyy | zzzz | かかか | kkk | 華華華 | ・・・ |
スタンドアロンのアプリケーションの場合は、DBとして以下の利用も考えられる。
実装も定義も面倒。
国際化(多言語化)辞書テーブルをしてコントロールのキャプションを国際化(多言語化)する方式を以下に示す。
この実装は、”Open棟梁”の各レイヤの「ベースクラス2」(画面コード親クラス2)上に共通処理として実装できる(画面内のコントロールを再帰的に処理する)。
「ベースクラス2」(画面コード親クラス2)上の”private void CMN_FormInit(string eventName)”メソッドなどに実装する。
以下はForm上のcontrolを再起処理する例。
private void Form1_Load(object sender, EventArgs e) { RecursiveProcessing(this); } private void RecursiveProcessing(Control ctrl) { System.Diagnostics.Debug.WriteLine(ctrl.Name); if (ctrl.HasChildren) { foreach (Control child in ctrl.Controls) { RecursiveProcessing(child); } } }
ここでキャプション(Textプロパティ)の値を設定する。
ControlをLabelコントロール等にDownCast?する場合は、以下を参照。
ASP.NETのWeb(System.Web.UI)コントロールのRendre系メソッドをカスタマイズする。