ja-JP/about_Script_Internationalization.help.txt

TOPIC
    about_Script_Internationalization

簡単な説明
    スクリプトがユーザーインターフェイス (UI) の言語でメッセージや指示を
    ユーザーに簡単に表示できるようにする、スクリプトの国際化機能について
    説明します。

詳細な説明
    PowerShell のスクリプト国際化機能を使うと、ヘルプやユーザーメッセージを
    ユーザーの言語で表示することで、世界中のユーザーにより適切に対応できる
    ようになります。

    スクリプト国際化機能は、実行中にオペレーティングシステムの UI カルチャ
    を照会し、適切な翻訳済みテキスト文字列をインポートして、それらをユーザー
    に表示します。Data セクションを使うと、テキスト文字列をコードとは別に
    格納できるため、それらを簡単に特定して抽出できます。新しいコマンドレット
    である ConvertFrom-StringData は、テキスト文字列を翻訳を容易にする
    ディクショナリのようなハッシュテーブルに変換します。

    国際化されたヘルプテキストをサポートするために、PowerShell には次の機能
    が含まれています。

    - テキスト文字列をコードの命令から分離する Data セクション。Data セク
      ションの詳細については about_Data_Sections を参照してください。

    - 新しい自動変数 $PSCulture と $PSUICulture。$PSCulture には、日付、
      時刻、通貨などの要素にシステムで使用される UI 言語の名前が格納され
      ます。$PSUICulture 変数には、メニューやテキスト文字列などのユーザー
      インターフェイス要素にシステムで使用される UI 言語の名前が格納され
      ます。

    - テキスト文字列を翻訳を容易にするディクショナリのようなハッシュテーブル
      に変換するコマンドレット ConvertFrom-StringData。詳細については
      ConvertFrom-StringData を参照してください。

    - 翻訳済みのテキスト文字列を格納する新しいファイル種類 .psd1。.psd1
      ファイルは、スクリプトディレクトリの言語別サブディレクトリに格納され
      ます。

    - 指定した言語の翻訳済みテキスト文字列を実行時にスクリプトへインポート
      するコマンドレット Import-LocalizedData。このコマンドレットは、Windows
      がサポートする任意の言語の文字列を認識してインポートします。詳細に
      ついては Import-LocalizedData を参照してください。

  Data セクション: 既定の文字列の格納
    スクリプト内で Data セクションを使用して、既定の言語のテキスト文字列を
    格納します。文字列を here-string 内のキー/値のペアとして配置します。
    各キー/値のペアは別々の行に記述する必要があります。コメントを含める
    場合、コメントは別々の行に記述する必要があります。

    ConvertFrom-StringData コマンドレットは、here-string 内のキー/値のペアを
    ディクショナリのようなハッシュテーブルに変換し、これを Data セクション
    変数の値に格納します。

    次の例では、World.ps1 スクリプトの Data セクションに、スクリプトの英語
    (米国) (en-US) のプロンプトメッセージのセットが含まれています。
    ConvertFrom-StringData コマンドレットは文字列をハッシュテーブルに変換し、
    $msgtable 変数に格納します。

        $msgTable = data {
            #culture="en-US"
            ConvertFrom-StringData @'
            helloWorld = Hello, World.
            errorMsg1 = You cannot leave the user name field blank.
            promptMsg = Please enter your user name.
        '@
        }

    here-string の詳細については about_Quoting_Rules を参照してください。

  PSD1 ファイル: 翻訳済み文字列の格納
    各 UI 言語のスクリプトメッセージを、スクリプトと同じ名前で拡張子が
    .psd1 の個別のテキストファイルに保存します。これらのファイルは、次の
    形式のカルチャ名を持つスクリプトディレクトリのサブディレクトリに格納
    します。

        <言語>-<地域>

    例: de-DE、ar-SA、zh-Hans

    たとえば、World.ps1 スクリプトが C:\Scripts ディレクトリに格納されて
    いる場合、次のようなファイルディレクトリ構造を作成します。

        C:\Scripts
        C:\Scripts\World.ps1
        C:\Scripts\de-DE\World.psd1
        C:\Scripts\ar-SA\World.psd1
        C:\Scripts\zh-CN\World.psd1
        ...

    スクリプトディレクトリの de-DE サブディレクトリにある World.psd1 ファイル
    には、次のステートメントを含めることができます。

        ConvertFrom-StringData -StringData @'
        helloWorld = Hallo, Welt.
        errorMsg1 = Das Feld Benutzername darf nicht leer sein.
        promptMsg = Geben Sie Ihren Benutzernamen ein.
        '@

    同様に、スクリプトディレクトリの ar-SA サブディレクトリにある World.psd1
    ファイルには、次のステートメントを含めることができます。

        ConvertFrom-StringData -StringData @'
        helloWorld = مرحبًا أيها العالَم
        errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
        promptMsg = يرجى إدخال اسم المستخدم الخاص بك
        '@

  Import-LocalizedData: 翻訳済み文字列の動的な取得
    現在のユーザーの UI 言語で文字列を取得するには、Import-LocalizedData
    コマンドレットを使用します。

    Import-LocalizedData は $PSUICulture 自動変数の値を見つけ、その
    $PSUICulture の値に一致するサブディレクトリ内の <スクリプト名>.psd1
    ファイルの内容をインポートします。次に、インポートした内容を
    BindingVariable パラメーターの値で指定された変数に保存します。

        Import-LocalizedData -BindingVariable msgTable

    たとえば、Import-LocalizedData コマンドが C:\Scripts\World.ps1 スクリプト
    内にあり、$PSUICulture の値が "ar-SA" の場合、Import-LocalizedData は
    次のファイルを見つけます。

        C:\Scripts\ar-SA\World.psd1

    そして、ファイルからアラビア語のテキスト文字列を $msgTable 変数にインポ
    ートし、World.ps1 スクリプトの Data セクションで定義されている既定の
    文字列を置き換えます。

    その結果、スクリプトが $msgTable 変数を使ってユーザーメッセージを表示
    すると、メッセージはアラビア語で表示されます。

    たとえば、次のスクリプトは "Please enter your user name" メッセージを
    アラビア語で表示します。

        if (!($username)) { $msgTable.promptMsg }

    Import-LocalizedData が $PSUICulture の値に一致する .psd1 ファイルを
    見つけられない場合、$msgTable の値は置き換えられず、$msgTable.promptMsg
    の呼び出しはフォールバックの en-US 文字列を表示します。

  例
    この例では、スクリプト国際化機能を使って、コンピューターに設定された
    言語で曜日をユーザーに表示する方法を示します。

    以下は Sample1.ps1 スクリプトファイルの完全なリストです。

    スクリプトは、ConvertFrom-StringData コマンドを含む Day ($Day) という
    名前の Data セクションで始まります。ConvertFrom-StringData に渡される式
    は、既定の UI カルチャである en-US での曜日名をキー/値のペアで含む
    here-string です。ConvertFrom-StringData コマンドレットは、here-string
    内のキー/値のペアをハッシュテーブルに変換し、$Day 変数の値に保存します。

    Import-LocalizedData コマンドは、$PSUICulture 自動変数の値に一致する
    ディレクトリ内の .psd1 ファイルの内容をインポートし、$Day 変数に保存
    して、Data セクションで定義された $Day の値を置き換えます。

    残りのコマンドは、文字列を配列に読み込んで表示します。

        $Day = data {
        #culture="en-US"
        ConvertFrom-StringData -StringData @'
            messageDate = Today is
            d0 = Sunday
            d1 = Monday
            d2 = Tuesday
            d3 = Wednesday
            d4 = Thursday
            d5 = Friday
            d6 = Saturday
        '@
        }

        Import-LocalizedData -BindingVariable Day

        #Build an array of weekdays.
        $a = $Day.d0, $Day.d1, $Day.d2, $Day.d3, $Day.d4, $Day.d5, $Day.d6

        # Get the day of the week as a number (Monday = 1).
        # Index into $a to get the name of the day.
        # Use string formatting to build a sentence.

        "{0} {1}" -f $Day.messageDate, $a[(Get-Date -UFormat %u)] | Out-Host

    スクリプトをサポートする .psd1 ファイルは、$PSUICulture の値に一致する
    名前を持つスクリプトディレクトリのサブディレクトリに保存されます。

    以下は .\de-DE\sample1.psd1 の完全なリストです。

        # culture="de-DE"
        ConvertFrom-StringData @'
            messageDate = Heute ist
            d0 = Sonntag
            d1 = Montag
            d2 = Dienstag
            d3 = Mittwoch
            d4 = Donnerstag
            d5 = Freitag
            d6 = Samstag
        '@

    その結果、$PSUICulture の値が de-DE であるシステムで Sample.ps1 を実行
    すると、スクリプトの出力は次のようになります。

        Heute ist Freitag

関連項目
    about_Data_Sections
    about_Automatic_Variables
    about_Hash_Tables
    about_Quoting_Rules
    Import-LocalizedData
    ConvertFrom-StringData

----
原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP