準備このハンズオンを行うために、3 つの画像ファイルを用意してください。 |
| コントロール ID | プロパティ名 | 設定値 |
|---|---|---|
| Form1 | Language | (既定値) |
| Form1 | Localizable | True |
次に既定カルチャ用の UI のデザインを行います。
| コントロール ID | プロパティ名 | 設定値 |
|---|---|---|
| Label1 | Text | Hello |
| PictureBox1 | Image | Default.bmp |

図 3 : サンプル アプリケーションのデザイン (既定)
最後にアプリケーションを実行し、エラーが発生しないことを確認します。

各カルチャに対応した UI をデザインします。
まず、日本のカルチャ向けにローカライズしましょう。
Windows フォームのプロパティを以下のように設定します。
| コントロール ID | プロパティ名 | 設定値 |
|---|---|---|
| Form1 | Language | 日本語 (日本) |
次に日本向けの UI のデザインを行います。
| コントロール ID | プロパティ名 | 設定値 |
|---|---|---|
| Label1 | Text | こんにちは |
| PictureBox1 | Image | Japan.bmp |

図 4 : サンプル アプリケーションのデザイン (日本語)
次に、韓国向けにローカライズしましょう。
Windows フォームのプロパティを以下のように設定します。
| コントロール ID | プロパティ名 | 設定値 |
|---|---|---|
| Form1 | Language | 韓国語 (韓国) |
※Language プロパティの設定直後、Visual Studio .NET 2003 上のデザイン画面が、既定のデザインに戻ることに注目してください。
韓国向けの UI のデザインを行います。
| コントロール ID | プロパティ名 | 設定値 |
|---|---|---|
| Label1 | Text | 안녕하세요 |
| PictureBox1 | Image | Korea.bmp |

図 5 : サンプル アプリケーションのデザイン (韓国語)
もう一度日本語 UI のデザインを行いたい場合は、Windows フォームの Language プロパティを "日本語 (日本)" に設定すれば、先ほど作成した日本語 UI のデザイン画面が表示されます。

カルチャ切り替えのための、テスト コードを埋め込みます。
Windows アプリケーションの UI は、Windows OS の言語バージョンによって自動的に決められます。例えば、日本語バージョンの OS を使用している場合には、日本語の UI が常に選択され、韓国語バージョンの OS を使用している場合には、韓国語の UI が選択されます。
ここでは、特定の言語バージョンの OS を使用していることを前提に、テストコードを埋め込み、プログラムでカルチャを変更する方法を行います。
多言語バージョンで動作を確認する場合には、このテスト コードは不要です。コントロール パネルより該当するカルチャを設定してください。
まず、韓国語 (韓国) にカルチャを明示的に切り替えるための、テスト コードを埋め込みます。下記赤字のコードを New メソッド (コンストラクタ) に記述してください。
Public Sub New ( )
MyBase.New ( )
System.Threading.Thread.CurrentThread.CurrentUICulture = _
New System.Globalization.CultureInfo ("ko-KR")
'この呼び出しはWindows フォーム デザイナで必要です。
InitializeComponent ( )
'InitializeComponent ( ) 呼び出しの後に初期化を追加します。
End Sub
(注意事項)
カルチャーコード |
||||||||||||||
|
カルチャ コードは、特定のカルチャを示す一意のコードで、言語コード、地域コードから構成されます。 カルチャ コードの中には言語コードのみを指定するものもあります。これはニュートラル カルチャと呼ばれ、特にその言語圏を示しています。例として、英語圏全般を示す en というニュートラル カルチャがあります。 しかし、このニュートラル カルチャでは特定できない要素もあります。例えば通貨です。英語圏の中でも、たとえばアメリカとイギリスでは通貨が異なります。 この場合、さらにカルチャを特定したアメリカを示す en-US やイギリスを示す en-GB といった固有カルチャの指定が必要となります。
図 6 : カルチャーコード
詳細については MSDN Library 「CultureInfo クラス」を参考にしてください。 |

アプリケーションを実行してみましょう。
まず、韓国語の UI が表示されることを確認します。

図 7 : サンプル アプリケーションの実行例 (韓国)
次に日本語の UI が表示されることを確認します。
Step 5 で記述したテスト コードを下記赤字のように変更して実行します。なお日本語版の OS を使用している場合は、テスト コード自体を削除して確認してください。
Public Sub New ( )
MyBase.New ( )
System.Threading.Thread.CurrentThread.CurrentUICulture = _
New System.Globalization.CultureInfo ("ja-JP")
'この呼び出しはWindows フォーム デザイナで必要です。
InitializeComponent ( )
'InitializeComponent ( ) 呼び出しの後に初期化を追加します。
End Sub

図 8 : サンプル アプリケーションの実行例 (日本)
カルチャに応じて、それぞれローカライズされた UI が表示されることが確認できました。

次にアプリケーションが想定していないカルチャが指定されたときの動作を確認します。
ここでは、Step 5 で記述したテスト コードを下記赤字のように変更し、カルチャとしてドイツ語 (オーストリア) を指定します。
Public Sub New ( )
MyBase.New ( )
System.Threading.Thread.CurrentThread.CurrentUICulture = _
New System.Globalization.CultureInfo ("de-AT")
'この呼び出しはWindows フォーム デザイナで必要です。
InitializeComponent ( )
'InitializeComponent ( ) 呼び出しの後に初期化を追加します。
End Sub

図 9 : サンプル アプリケーションの実行例 (既定)
カルチャの構成を図 10 の様に階層構造として見立てた場合、カルチャは階層の下からさかのぼって検索されます。これをリソース フォールバック プロセスと呼びます。

図 10 : カルチャの構成
指定したカルチャがアプリケーションによってサポートされている場合には、そのカルチャがそのまま適用されます。しかし、特定の固有カルチャで合致しなかった場合には、階層をさかのぼって適するリソースが存在するか検索が行われます。
厳密には、リソース フォールバック プロセスは、アセンブリが配置されている場所などの様々な条件に依存します。詳細については「アプリケーションのリソース」を参考にしてください。
このサンプルでは、リソース フォールバック プロセスに従って、最終的に既定カルチャのUIが選択され表示されることが確認できます。
このように Windows アプリケーションの UIに関して国際化対応する場合、Visual Studio .NET によって、コーディングレスで実現することができます。
実際の開発においては、アプリケーションの国際化を行う場合、下記の 3 つの手順を推奨しています。
複数のカルチャで使用できる共通的な設計・実装を行う。
グローバル化されたアプリケーションがローカライズできる段階に達しているか品質を確認する。
特定のカルチャに合わせてアプリケーションをカスタマイズする。
詳細は参考資料「国際対応アプリケーションの開発」 を参考にしてください。
実際のアプリケーションにおいては、アプリケーションの処理ロジックで、動的に文字列や画像を操作する必要がある場合もあります。
この場合の実現方法については、「.NET Framework を活用し、コードによる Windows アプリケーションの国際化を行う」を参照してください。
Top of Page