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 |