次の方法で共有


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: テキスト文字列をインポートする

PS C:\> Import-LocalizedData -BindingVariable "Messages"

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

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

例 2: ローカライズされたデータ文字列をインポートする

PS C:\> Import-LocalizedData -FileName "Test.psd1" -UICulture "en-US"

Name                           Value
----                           -----
Msg3                           "Use $_ to represent the object that is 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."

このコマンドはコマンドラインで実行されます。台本にはありません。 Test.psd1 ファイルからローカライズされたデータ文字列を取得し、コマンド ラインに表示します。 このコマンドはスクリプトでは使用されないため、 FileName パラメータは必須です。 このコマンドでは、UICulture パラメーターを使用して、en-US カルチャを指定します。

Import-LocalizedData は、ローカライズされたデータ文字列を含むハッシュ テーブルを返します。

例 3: UI カルチャ文字列をインポートする

PS C:\> Import-LocalizedData -BindingVariable "MsgTbl" -UICulture "ar-SA" -FileName "Simple" -BaseDirectory "C:\Data\Localized"

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

UICulture パラメーターを使用して、C:\Data\Localization の 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 is 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: スクリプト内の既定のテキスト文字列を置き換える

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...

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

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

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

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

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

例 6: UI カルチャが見つからない場合はエラー メッセージを非表示にする

PS C:\> # In Day1.ps1

Import-LocalizedData -BindingVariable "Day"

# In Day2.ps1

Import-LocalizedData -BindingVariable "Day" -ErrorAction:SilentlyContinue

PS C:\> .\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 PS C:\> .\Day2.ps1
Today is Tuesday

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

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

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

サンプル出力は、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 セクションを変数に割り当て、BindingVariable パラメータの値に DATA セクション変数の名前を入力します。 その後、 Import-LocalizedData がインポートしたコンテンツを BindingVariable に保存すると、インポートされたデータによって既定のテキスト文字列が置き換えられます。 デフォルトのテキスト文字列を指定しない場合は、任意の変数名を選択できます。

型:String
Aliases:Variable
配置:0
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-FileName

インポートするデータ ファイル (.psd1) の名前を指定します。 ファイル名を入力します。 ファイル名拡張子 .psd1 を含まないファイル名を指定することも、ファイル名拡張子 .psd1 を含むファイル名を指定することもできます。 データ ファイルは Unicode または UTF-8 として保存する必要があります。

FileName パラメーターは、スクリプトで Import-LocalizedData を使用しない場合に必要です。 それ以外の場合、パラメーターは省略可能であり、既定値はスクリプトのベース名です。 このパラメーターを使用して、 Import-LocalizedData に別の .psd1 ファイルを検索するように指示できます。

たとえば、 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自動変数の値です。 UI カルチャを <language>-<region> の形式で入力します (en-US、de-DE、ar-SAなど)。

UICulture パラメーターの値によって、Import-LocalizedData がスクリプトの .psd1 ファイルを取得する言語固有のサブディレクトリ (ベース ディレクトリ内) が決まります。

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

型:String
配置:1
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

None

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

出力

Hashtable

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

メモ

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

    たとえば、ユーザーメッセージを 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 ファイルが見つからない場合は、コマンドは失敗し、スクリプトのデータは既定の言語で表示され、データをインポートできなかったことを示すエラー メッセージが表示されます。 メッセージを抑制し、正常に失敗するには、ErrorAction 共通パラメーターを使用し、値を SilentlyContinue に設定します。

    Import-LocalizedData がサブディレクトリと .psd1 ファイルを見つけると、ユーザー メッセージのハッシュ テーブルをコマンドの BindingVariable パラメーターの値にインポートします。 その後、ハッシュ・テーブルから変数にメッセージを表示すると、ローカライズされたメッセージが表示されます。

    詳細については、「about_Script_Internationalization (https://go.microsoft.com/fwlink/?LinkID=113262)」を参照してください。