次の方法で共有


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」を参照してください。

パラメーター

-BaseDirectory <string>

.psd1 ファイルがある基本ディレクトリを指定します。既定値は、スクリプトがあるディレクトリです。Import-LocalizedData は、基本ディレクトリの言語固有のサブディレクトリ内にあるスクリプトの .psd1 ファイルを検索します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-BindingVariable <string>

テキスト文字列がインポートされる変数を指定します。ドル記号 ($) を付けずに変数名を入力します。

Import-LocalizedData を使用してスクリプトの DATA セクションで指定された既定のテキスト文字列を置換する場合は、DATA セクションを変数に代入し、BindingVariable パラメーターの値に DATA セクション変数の名前を入力します。次に、Import-LocalizedData がインポートされた内容を BindingVariable に保存すると、インポートされたデータで既定のテキスト文字列が置換されます。既定のテキスト文字列を指定しない場合は、任意の変数名を選択できます。

必須

true

位置

1

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-FileName <string>

インポートする .psd1 ファイルの名前を指定します。.psd1 ファイル名拡張子を除くファイル名を入力します。

既定値はスクリプトの名前です。たとえば、スクリプトが FindFiles.ps1 の場合、Import-LocalizedData は FindFiles.psd1 を検索します。このパラメーターを使用して、Import-LocalizedData に別の .psd1 ファイルを検索するように指示できます。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-SupportedCommand <string[]>

データのみを生成するコマンドレットおよび関数を指定します。

記述またはテストしたコマンドレットおよび関数を含めるには、このパラメーターを使用します。詳細については、「about_Script_Internationalization」を参照してください。

必須

false

位置

named

既定値

なし

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-UICulture <string>

代替 UI カルチャを指定します。既定値は $PsUICulture 自動変数の値です。UI カルチャは、en-US、de-DE、ar-SA のように "<言語>-<地域>" 形式で入力します。

UICulture パラメーターの値は、Import-LocalizedData がスクリプトの .psd1 ファイルを取得する言語固有のサブディレクトリ (基本ディレクトリ内) を指定します。

このコマンドレットは、"de-DE" や "ar-SA" など、UICulture パラメーターまたは $PsUICulture 自動変数の値と同じ名前を持つサブディレクトリを検索します。ディレクトリが検出されない場合、またはディレクトリにスクリプトの .psd1 ファイルが含まれていない場合、"de" や "ar" などの言語コードの名前を持つサブディレクトリを検索します。サブディレクトリまたは .psd1 ファイルが検出されない場合、コマンドは失敗し、スクリプトで指定されている既定の言語でデータが表示されます。

必須

false

位置

2

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

<CommonParameters>

このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.

入力と出力

入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。

入力

なし

パイプを使用してこのコマンドレットに入力を渡すことはできません。

出力

System.Collections.Hashtable

Import-LocalizedData は、BindingVariable パラメーターの値で指定される変数にハッシュ テーブルを保存します。

Import-LocalizedData を使用する前に、ユーザー メッセージをローカライズします。キーと値のペアのハッシュ テーブルでロケール (UI カルチャ) ごとにメッセージを書式設定し、スクリプトと同じ名前で .psd1 ファイル名拡張子を持つファイルにハッシュ テーブルを保存します。サポートされている UI カルチャごとにスクリプト ディレクトリの下にディレクトリを作成し、UI カルチャ名を持つディレクトリに各 UI カルチャの .psd1 ファイルを保存します。

たとえば、de-DE ロケールのユーザー メッセージをローカライズし、ハッシュ テーブルで書式設定します。ハッシュ テーブルを <ScriptName>.psd1 ファイルに保存します。次に、スクリプト ディレクトリの下に de-DE サブディレクトリを作成し、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 ファイルが検出されない場合、コマンドは失敗し、データは既定の言語でスクリプトに表示され、データがインポートされなかったことを示すエラー メッセージが表示されます。失敗してもメッセージを表示しないでそのまま続行するには、値が SilentlyContinue の ErrorAction 共通パラメーターを使用します。

Import-LocalizedData がサブディレクトリおよび .psd1 ファイルを検出した場合は、ユーザー メッセージのハッシュ テーブルがコマンドの BindingVariable パラメーターの値にインポートされます。この結果、変数に格納されたハッシュ テーブルからメッセージが表示されると、ローカライズされたメッセージが表示されます。

詳細については、「about_Script_Internationalization」を参照してください。

例 1

C:\PS>import-localizeddata -bindingVariable messages

説明
-----------
このコマンドは、テキスト文字列を $messages 変数にインポートします。また、コマンドレット パラメーターのすべての既定値を使用します。

このコマンドが C:\test ディレクトリ内の Archives.ps1 スクリプトに含まれており、$PsUICulture 自動変数の値が zh-CN の場合、Import-LocalizedData は Archives.psd1 ファイルを C:\test\zh-CN ディレクトリにインポートします。





例 2

C:\PS>import-localizeddata -bindingVariable msgTbl -uiculture ar-SA -filename Simple -baseDirectory C:\Data\Localized

説明
-----------
このコマンドは、テキスト文字列をスクリプトの $msgTbl 変数にインポートします。

また、UICulture パラメーターを使用して、C:\Data\Localized の ar-SA サブディレクトリ内の Simple.psd1 ファイルからデータをインポートするようにコマンドレットに指示します。





例 3

C:\PS># 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 is being processed."
'@

# In C:\Test\Test.ps1

import-localizeddata -bindingvariable messages
write-host $messages.msg2

# In Windows PowerShell

C:\PS> .\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 変数内のいずれかのメッセージをホスト プログラムに書き込む Write-Host コマンドが含まれています。

この例の最後は、スクリプトを実行する部分です。出力結果からは、オペレーティング システムの現在のユーザーに対して設定されている UI 言語で、正しいユーザー メッセージが表示されていることがわかります。





例 4

C:\PS># 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
...

説明
-----------
この例は、Import-LocalizedData を使用して、スクリプトの DATA セクションで定義された既定のテキスト文字列を置換する方法を示しています。

この例では、TestScript.ps1 スクリプトの DATA セクションに、ConvertFrom-StringData コマンドが存在します。このコマンドによって、DATA セクションの内容がハッシュ テーブルに変換され、$UserMessages 変数の値に保存されます。

このスクリプトには、Import-LocalizedData コマンドも使用されています。このコマンドは、TestScript.psd1 ファイルの翻訳済みテキスト文字列のハッシュ テーブルを $PsUICulture 変数の値で指定されたサブディレクトリにインポートします。この .psd1 ファイルが見つかった場合、そのファイルの翻訳済みの文字列を同じ $UserMessages 変数の値に保存し、DATA セクションのロジックで保存されたハッシュ テーブルを上書きします。

3 番目のコマンドは、$UserMessages 変数の最初のメッセージを表示します。

Import-LocalizedData コマンドが $PsUICulture 言語の .psd1 ファイルを検出した場合、$UserMessages 変数の値には翻訳済みのテキスト文字列が含まれています。何かの理由でコマンドが失敗した場合は、スクリプトの DATA セクションで定義された既定のテキスト文字列が表示されます。





例 5

C:\PS># In Day1.ps1
Import-LocalizedData -bindingVariable Day
Day.MessageDate

# In Day2.ps1
Import-LocalizedData -bindingVariable Day -errorAction:silentlycontinue
Day.MessageDate

C:\PS> .\Day1.ps1

Import-LocalizedData : Cannot 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


C:\PS> .\Day2.ps1

Today is Tuesday

説明
-----------
この例は、Import-LocalizedData によって、ユーザーの UI カルチャに一致するディレクトリが検出されない場合、またはこのようなディレクトリでスクリプトの .psd1 ファイルが検出されない場合に、エラー メッセージが表示されないようにする方法を示しています。

値が "SilentlyContinue" の ErrorAction 共通パラメーターを使用すると、エラー メッセージを表示しないようにすることができます。これは、既定の言語またはフォールバック言語でユーザー メッセージが指定されている場合、およびエラー メッセージが不要な場合に特に便利です。

この例では、Import-LocalizedData コマンドを含んでいる Day1.ps1 と Day2.ps1 の 2 つのスクリプトを比較します。これらのスクリプトは、Day2 では値が SilentlyContinue の ErrorAction 共通パラメーターを使用していることを除いて同じです。

サンプル出力は、UI カルチャが fr-BE に設定され、その UI カルチャには一致するファイルまたはディレクトリが存在しない場合に両方のスクリプトを実行した結果を示しています。Day1.ps1 の場合、エラー メッセージと英語の出力が表示されます。Day2.ps1 の場合、英語の出力のみが表示されます。





関連項目

概念

about_Script_Internationalization