「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系メソッドをカスタマイズする。