2つの言語で利用できる必要があるPowerShellスクリプトに取り組んでいます。私の生活を楽にするために、コードに直接テキストを入れてコードの2つのコピーを維持するのではなく、それぞれの言語ファイルを作成し、そこに文字列を含めることをお勧めします。これを実装する方法に関するベストプラクティスはありますか?
私が今直面している障害は、いくつかの文字列に変数を含める必要があるということです。そのため、すでにいくつかの問題が発生しています。文字列が設定されたときに変数の値が使用されることに気づきました。これは私にとって理にかなっています。
したがって、たとえば、エラーレベルを出力する文字列がある場合:
$Strings.ErrorMessage = "Error detected with $Level severity"
その後$Level
、任意の値に設定すると、スクリプトが呼び出されたときにその値はありません。$Level
設定する前に設定されていないとすると、$Strings.ErrorMessage
出力は次のようになります。
Error detected at severity
出力される前に$ Level変数の現在の値を取得するようにPowerShellに指示する方法はありますか?
で、このリンクを参照してくださいabout_Script_Internationalizationと、このリンク行く例を示します:
ローカライズ 前のPSUICultureExample.ps1
[System.Windows.Forms.MessageBox]::Show(
"This is a small example showing how to localize strings in a PowerShell script.",
"Hello, World!") | Out-Null
2つのローカライズされたスクリプトを作成するコード。
Localized \ PSUICultureExample.psd1
ConvertFrom-StringData @"
MessageTitle = Hello, World!
MessageBody = This is a small example showing how to localize strings in a PowerShell script.
OtherMessage = Hello {0}!
"@
Localized \ es-ES \ PSUICulture.psd1
ConvertFrom-StringData @"
MessageTitle = ¡Hola mundo!
MessageBody = Este es un pequeño ejemplo que muestra cómo localizar cadenas en un script de PowerShell.
OtherMessage = ¡Hola {0}!
"@
PSUICultureExample.ps1 localistion AFTER
$s = Import-LocalizedData -BaseDirectory (Join-Path -Path $PSScriptRoot -ChildPath Localized)
[System.Windows.Forms.MessageBox]::Show($s.MessageBody, $s.MessageTitle) | Out-Null
次に、文字列内に値を含める(補間)には、次のようにします。
$ValueToInsert = 'Bob'
$s.OtherMessage -f $ValueToInsert
フォルダを編集&はスクリプトに関連しています。Localized
Localized\es-ES
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加