Import-LocalizedData
オペレーティング システム用に選択された UI カルチャに基づいて、言語固有のデータをスクリプトと関数にインポートします。
構文
Import-LocalizedData
[[-BindingVariable] <String>]
[[-UICulture] <String>]
[-BaseDirectory <String>]
[-FileName <String>]
[-SupportedCommand <String[]>]
[<CommonParameters>]
説明
Import-LocalizedData
コマンドレットは、オペレーティング システムの現在のユーザーに設定されている UI 言語に一致する名前のサブディレクトリから文字列を動的に取得します。 スクリプトが現在のユーザーによって選択された UI 言語でユーザー メッセージを表示できるように設計されています。
Import-LocalizedData
は、スクリプト ディレクトリの言語固有のサブディレクトリにある .psd1
ファイルからデータをインポートし、コマンドで指定されたローカル変数に保存します。 コマンドレットは、 $PSUICulture
自動変数の値に基づいてサブディレクトリとファイルを選択します。 スクリプトのローカル変数を使用してユーザー メッセージを表示すると、ユーザーの UI 言語でメッセージが表示されます。
Import-LocalizedData
のパラメーターを使用して、代替 UI カルチャ、パス、ファイル名を指定し、サポートされているコマンドを追加したり、.psd1
ファイルが見つからない場合に表示されるエラー メッセージを抑制したりできます。
Import-LocalizedData
コマンドレットは、Windows PowerShell 2.0 で導入されたスクリプトの国際化イニシアチブをサポートしています。 このイニシアチブは、スクリプトを使用して現在のユーザーの UI 言語でユーザー メッセージを容易に表示できるようにして、世界中のユーザーのサービス向上を目的としています。 詳細については、 .psd1
ファイルの形式については、 about_Script_Internationalizationを参照してください。
例
例 1: テキスト文字列をインポートする
次の使用例は、テキスト文字列を $Messages
変数にインポートします。 その他のすべてのコマンドレットのパラメーターの既定値を使用します。
Import-LocalizedData -BindingVariable "Messages"
コマンドが C:\Test
ディレクトリの Archives.ps1 スクリプトに含まれていて、$PsUICulture
自動変数の値が zh-CN の場合、Import-LocalizedData
C:\test\zh-CN
ディレクトリ内のArchives.psd1
ファイルを$Messages
変数にインポートします。
例 2: ローカライズされたデータ文字列をインポートする
この例は、スクリプト内ではなくコマンド ラインで実行されます。 Test.psd1 ファイルからローカライズされたデータの文字列を取得し、コマンドラインに表示します。 このコマンドはスクリプトでは使用されないため、 FileName パラメーターが必要です。 このコマンドでは、 UICulture パラメーターを使用して en-US カルチャを指定します。
Import-LocalizedData -FileName "Test.psd1" -UICulture "en-US"
Name Value
---- -----
Msg3 "Use $_ to represent the object that's being processed."
Msg2 "This command requires the credentials of a member of the Administrators group on the...
Msg1 "The Name parameter is missing from the command."
Import-LocalizedData
は、ローカライズされたデータ文字列を含むハッシュテーブルを返します。
例 3: UI カルチャ文字列をインポートする
Import-LocalizedData -BindingVariable "MsgTbl" -UICulture "ar-SA" -FileName "Simple" -BaseDirectory "C:\Data\Localized"
このコマンドは、スクリプトの $MsgTbl
変数にテキスト文字列をインポートします。
UICulture パラメーターを使用して、C:\Data\Localized
のar-SA
サブディレクトリにあるSimple.psd1
ファイルからデータをインポートするようにコマンドレットに指示します。
例 4: ローカライズされたデータをスクリプトにインポートする
この例は、単純なスクリプト内のローカライズされたデータを表示する方法を示します。
PS C:\> # In C:\Test\en-US\Test.psd1:
ConvertFrom-StringData @'
# English strings
Msg1 = "The Name parameter is missing from the command."
Msg2 = "This command requires the credentials of a member of the Administrators group on the computer."
Msg3 = "Use $_ to represent the object that's being processed."
'@
# In C:\Test\Test.ps1
Import-LocalizedData -BindingVariable "Messages"
Write-Host $Messages.Msg2
# In Windows PowerShell
PS C:\> .\Test.ps1
This command requires the credentials of a member of the Administrators group on the computer.
この例の最初の部分は、 Test.psd1
ファイルの内容を示しています。 これには、一連の名前付きテキスト文字列をハッシュテーブルに変換する ConvertFrom-StringData
コマンドが含まれています。 Test.psd1
ファイルは、スクリプトを含む C:\Test
ディレクトリの en-US サブディレクトリにあります。
この例の 2 番目の部分は、 Test.ps1
スクリプトの内容を示しています。 これには、一致する.psd1
ファイルから$Messages
変数にデータをインポートするImport-LocalizedData
コマンドと、$Messages
変数内のメッセージの 1 つをホスト プログラムに書き込むWrite-Host
コマンドが含まれています。
例の最後の部分で、スクリプトを実行します。 出力は、オペレーティング システムの現在のユーザーのために設定された UI の言語で正しいユーザー メッセージが表示されることを示しています。
例 5: スクリプト内の既定のテキスト文字列を置き換える
この例では、 Import-LocalizedData
を使用して、スクリプトの DATA セクションで定義されている既定のテキスト文字列を置き換える方法を示します。
PS C:\> # In TestScript.ps1
$UserMessages = DATA
{ ConvertFrom-StringData @'
# English strings
Msg1 = "Enter a name."
Msg2 = "Enter your employee ID."
Msg3 = "Enter your building number."
'@
}
Import-LocalizedData -BindingVariable "UserMessages"
$UserMessages.Msg1...
この例では、TestScript.ps1 スクリプトの DATA セクションに、DATA セクションの内容をハッシュテーブルに変換し、$UserMessages
変数の値に格納するConvertFrom-StringData
コマンドが含まれています。
スクリプトには Import-LocalizedData
コマンドも含まれています。このコマンドは、 $PsUICulture
変数の値で指定されたサブディレクトリ内の TestScript.psd1 ファイルから翻訳されたテキスト文字列のハッシュテーブルをインポートします。 コマンドで .psd1
ファイルが見つかると、ファイルから翻訳された文字列が同じ $UserMessages
変数の値に保存され、DATA セクション ロジックによって保存されたハッシュテーブルが上書きされます。
3 番目のコマンドは、 $UserMessages
変数の最初のメッセージを表示します。
Import-LocalizedData
コマンドが$PsUICulture
言語の.psd1
ファイルを見つけた場合、$UserMessages
変数の値には翻訳されたテキスト文字列が含まれます。 コマンドが何らかの理由で失敗した場合、スクリプトの DATA セクションに定義されている既定のテキスト文字列が表示されます。
例 6: UI カルチャが見つからない場合にエラー メッセージを抑制する
この例では、ユーザーの UI カルチャに一致するディレクトリ Import-LocalizedData
見つからない場合や、それらのディレクトリにスクリプトの .psd1
ファイルが見つからない場合に表示されるエラー メッセージを抑制する方法を示します。
PS C:\> # In Day1.ps1
Import-LocalizedData -BindingVariable "Day"
# In Day2.ps1
Import-LocalizedData -BindingVariable "Day" -ErrorAction:SilentlyContinue
PS C:\> .\Day1.ps1
Import-LocalizedData : Can't find PowerShell data file 'Day1.psd1' in directory 'C:\ps-test\fr-BE\'
or any parent culture directories.
At C:\ps-test\Day1.ps1:17 char:21+ Import-LocalizedData <<<< Day
Today is Tuesday
PS C:\> .\Day2.ps1
Today is Tuesday
エラー メッセージを抑制するには、 ErrorAction 共通パラメーターを値 SilentlyContinue と共に使用できます。 これは、既定の言語またはフォールバック言語でユーザー メッセージを指定していて、エラー メッセージが不要な場合に特に便利です。
この例では、Import-LocalizedData
コマンドを含む 2 つのスクリプト (Day1.ps1
と Day2.ps1) を比較します。 スクリプトは同じですが、Day2 では値が SilentlyContinue
の ErrorAction 共通パラメーターが使用されます。
サンプル出力は、UI カルチャが fr-BE
に設定されていて、その UI カルチャに一致するファイルまたはディレクトリがない場合に、両方のスクリプトを実行した結果を示しています。 Day1.ps1
には、エラー メッセージと英語の出力が表示されます。 Day2.ps1
単に英語の出力を表示します。
パラメーター
-BaseDirectory
.psd1
ファイルが配置されているベース ディレクトリを指定します。 既定では、スクリプトが配置されているディレクトリです。 Import-LocalizedData
は、ベース ディレクトリの言語固有のサブディレクトリにあるスクリプトの .psd1
ファイルを検索します。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-BindingVariable
テキスト文字列のインポート先の変数を指定します。 ドル記号 ($
) なしで変数名を入力します。
Windows PowerShell 2.0 ではこのパラメーターは必須です。 Windows PowerShell 3.0 ではこのパラメーターは省略可能です。 このパラメーターを省略すると、 Import-LocalizedData
はテキスト文字列のハッシュテーブルを返します。 ハッシュテーブルはパイプラインに渡されるか、コマンド ラインに表示されます。
Import-LocalizedData
を使用してスクリプトの DATA セクションで指定された既定のテキスト文字列を置き換える場合は、DATA セクションを変数に割り当て、data セクション変数の名前を BindingVariable パラメーターの値に入力します。 次に、 Import-LocalizedData
インポートしたコンテンツを BindingVariable に保存すると、インポートされたデータによって既定のテキスト文字列が置き換えられます。 既定のテキスト文字列を指定しない場合は、任意の変数名を選択できます。
型: | String |
Aliases: | Variable |
配置: | 0 |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-FileName
インポートするデータ ファイル (.psd1)
の名前を指定します。 ファイル名を入力します。 .psd1
ファイル名拡張子を含まないファイル名を指定することも、.psd1
ファイル名拡張子を含むファイル名を指定することもできます。 データ ファイルは Unicode または UTF-8 として保存する必要があります。
Import-LocalizedData
がスクリプトで使用されていない場合は、FileName パラメーターが必要です。
それ以外の場合、このパラメーターは省略可能であり、既定値はスクリプトのベース名です。 このパラメーターを使用して、別の.psd1
ファイルを検索するようにImport-LocalizedData
を指示できます。
たとえば、FileNameを省略し、スクリプト名をFindFiles.ps1
した場合、Import-LocalizedData
FindFiles.psd1
データ ファイルを検索します。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-SupportedCommand
データのみを生成するコマンドレットと関数を指定します。
このパラメーターを使用して、記述またはテストしたコマンドレットと関数を指定します。 詳細については、「 about_Script_Internationalization」を参照してください。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-UICulture
代替の UI カルチャを指定します。 既定値は、 $PsUICulture
自動変数の値です。 en-US
、de-DE
、ar-SA
などの
UICulture パラメーターの値は、スクリプトの.psd1
ファイルを取得する言語固有のサブディレクトリ (ベース ディレクトリ内) を決定Import-LocalizedData
。
コマンドレットは、UICulture パラメーターの値またはde-DE
やar-SA
などの$PsUICulture
自動変数の値と同じ名前のサブディレクトリを検索します。 ディレクトリが見つからない場合、またはディレクトリにスクリプトの .psd1
ファイルが含まれていない場合は、de や ar などの言語コードの名前を持つサブディレクトリを検索します。 サブディレクトリまたは .psd1
ファイルが見つからない場合、コマンドは失敗し、スクリプトで指定された既定の言語でデータが表示されます。
型: | String |
配置: | 1 |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
None
このコマンドレットにオブジェクトをパイプすることはできません。
出力
このコマンドレットは、 BindingVariable パラメーターの値で指定された変数にハッシュテーブルを保存します。
メモ
Import-LocalizedData
を使用する前に、ユーザー メッセージをローカライズします。 キーと値のペアのハッシュテーブルに各ロケール (UI カルチャ) のメッセージを書式設定し、スクリプトと同じ名前とファイル名拡張子を持つファイルにハッシュテーブル.psd1
保存します。 サポートされている UI カルチャごとにスクリプト ディレクトリの下にディレクトリを作成し、UI カルチャ名を使用して各 UI カルチャの.psd1
ファイルをディレクトリに保存します。たとえば、de-DE ロケールのユーザー メッセージをローカライズし、ハッシュテーブルに書式設定します。 ハッシュテーブルを
<ScriptName>.psd1
ファイルに保存します。 次に、スクリプト ディレクトリの下にde-DE
サブディレクトリを作成し、ドイツ語の<ScriptName>.psd1
ファイルをde-DE
サブディレクトリに保存します。 サポートしているロケールごとにこのメソッドを繰り返します。Import-LocalizedData
は、スクリプトのローカライズされたユーザー メッセージの構造化検索を実行します。Import-LocalizedData
は、スクリプト ファイルが配置されているディレクトリ (または BaseDirectory パラメーターの値) で検索を開始します。 次に、de-DE
やar-SA
など、$PsUICulture
変数の値 (または UICulture パラメーターの値) と同じ名前のサブディレクトリをベース ディレクトリ内で検索します。 次に、そのサブディレクトリで、スクリプト (または FileName パラメーターの値) と同じ名前の.psd1
ファイルを検索します。Import-LocalizedData
UI カルチャの名前を持つサブディレクトリが見つからない場合、またはサブディレクトリにスクリプトの.psd1
ファイルが含まれていない場合は、言語コードの名前 (de や ar など) を含むサブディレクトリ内のスクリプトの.psd1
ファイルを検索します。 サブディレクトリまたは.psd1
ファイルが見つからない場合、コマンドは失敗し、スクリプトの既定の言語でデータが表示され、データをインポートできなかったことを示すエラー メッセージが表示されます。 メッセージを抑制し、正常に失敗するには、 ErrorAction 共通パラメーターを使用し、値を SilentlyContinue に設定します。Import-LocalizedData
サブディレクトリと.psd1
ファイルが見つかると、コマンドの BindingVariable パラメーターの値にユーザー メッセージのハッシュテーブルがインポートされます。 次に、ハッシュテーブルからのメッセージを変数に表示すると、ローカライズされたメッセージが表示されます。詳細については、「 about_Script_Internationalization」を参照してください。
関連リンク
PowerShell