多言語対応のアプリケーションを作成する方法

download.gif

サンプル コードのダウンロード (vbmigtips_CurrentUICulture.msi, 495 KB)

※ このサンプルをインストールするには Visual Studio 2005 が必要です。

多言語対応のアプリケーションを作成する方法について紹介します。

Visual Basic 2005 で、複数言語に対応したアプリケーションを作成する場合、各実行環境に対応させるため各国言語用のリソース DLL を作成する必要があります。リソース DLL を作成するには、Localizable プロパティを True にし、Language プロパティで対応させる言語を指定します。今回は、図1 のように表示されるフォームに配置されているボタンのテキストを各言語で表示されるアプリケーションを作成します。操作手順は以下のとおりです。

CurrentUICulture_fig01.JPG
図1

まず、指定した言語でテキストを表示する複数言語に対応しカルチャを作成します。フォームに Button コントロールを 2 つ貼り付けます。次に、Form の Localizable プロパティを「True」にし、Language プロパティを「日本語 (日本) 」に設定します。そして、2つの Button の Text プロパティを変更します (図2) 。

CurrentUICulture_fig02.JPG
図2

テキスト変更後、Language プロパティを「 (既定値) 」に戻します。同様に、英語表記されるカルチャを作成します。Language プロパティを「英語 (米国) 」に設定し、各 Button の Text プロパティを変更します。変更後、Language プロパティを「 (既定値) 」に戻します。 これにより、○○ja-JP.resx ファイル (日本語カルチャ) 、○○en-US.resx ファイル (英語 (米国) カルチャ) が生成されます (図3) 。

CurrentUICulture_fig03.JPG
図3

上記の手順で操作を行い、プロジェクトをビルドすると、カルチャごとにフォルダが作成され DLL ファイルが生成されます。生成された DLL ファイルには、文字列や画像などの情報のみが格納されます。この生成された DLL ファイルにより、アプリケーションを起動する環境に応じて、表示されるフォームが異なります。たとえば、日本語 (日本) 環境で実行すると、日本語でデザインをしたフォーム (図2) が表示され、英語 (米国) 環境で実行すると、英語でデザインをしたフォームが表示されます (図4) 。

CurrentUICulture_fig04.JPG
図4

このように、各環境に応じた言語でデザインを作成し、DLL ファイルを生成させることで複数の環境に対応したアプリケーションを作成することができます。しかし、実行環境に応じて、表示する言語のデザインを変更するのではなく、ユーザーが意図的に変更させたい場合があると思います。そこで続いては、図5 のように、日本語と英語表示のいずれかを選択し、指定した言語のデザインを表示させる方法を紹介します。図5の[Form2 を開く]ボタンをクリックすると、図2、図4 のいずれかが表示されます。

CurrentUICulture_fig05.JPG
図5

意図的に表示する言語のデザインを変更する場合、現在のカルチャを変更する必要があります。カルチャの変更は CurrentUICulture プロパティを使用します。実装コードは以下のとおりです。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
  Dim culture As String 
  If Me.RadioButton1.Checked = True Then
    culture = "ja-JP"
  Else
    culture = "en-US"
  End If
  Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture)
  Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture 
  Form2.Show()
End Sub

リスト1

上記 (リスト1) の「Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture)」では、カルチャ情報を設定し、「Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture」で Windows フォームのユーザー インターフェイスを表示するためのカルチャを設定します。これにより、指定したカルチャによって作成された Windows フォーム (Form2) が表示されます。

リスト1 を実装し、図5 の「日本語」を選択し[Form2 を開く]ボタンをクリックすると、図2 が表示され、「英語」を選択すると図4 が表示されます。