PowerShell2.0でスクリプトの国際化機能が追加されています。どのような機能かと云えば、変数に格納するデータを言語識別子フォルダ(ja-JP、en-USとか)に格納しておくことで、UICultuteによって自動的に適用するデータを選択するというものです。
具体例を使って説明しましょう。以下に実行したいスクリプトファイル(world.ps1)を示します。
# 変数msgTableのデフォルト定義 Data msgTable { ConvertFrom-StringData @' helloWorld = Hello, World errorMsg = You cannot leave the username field blank. promptMsg = Please enter your username. '@ } param ($language) Import-LocalizedData -BindingVariable msgTable -Culture $language $msgTable
ConvertFrom-StringData @' helloWorld = こんにちは。 errorMsg = ユーザー名は空白にできません。 promptMsg = ユーザー名を入力してください。 '@
PS (1) >.\world ja-JP #日本語を指定 Name Value ---- ----- promptMsg ユーザー名を入力してください。 helloWorld こんにちは。 errorMsg ユーザー名は空白にできません。 PS (2) >.\world en-US #英語を指定 Name Value ---- ----- promptMsg Please enter your username. helloWorld Hello, World errorMsg You cannot leave the username field blank.
指定したカルチャによって、データの内容が切り替わっているのを確認することができます。PowerShell 2.0では、現在のカルチャを判断するために$UICultureシェル変数が追加されています。それでは、ここまでに出てきた新しいキーワードやコマンドレットを説明していきます。
このような記述を行うことで変数定義をまとめたり、ローカライズをできるようにしたのが、PowerShell2.0の国際化対応となります。