根据为操作系统选择的 UI 区域性,将语言特定的数据导入脚本和函数。
语法
Import-LocalizedData [-BindingVariable] <string> [[-UICulture] <string>] [-BaseDirectory <string>] [-FileName <string>] [-SupportedCommand <string[]>] [<CommonParameters>]
说明
Import-LocalizedData cmdlet 从其名称与为操作系统的当前用户设置的 UI 语言相匹配的子目录中动态检索字符串。它用于使脚本以当前用户所选的 UI 语言显示用户消息。
Import-LocalizedData 从脚本目录的语言特定子目录中的 .psd1 文件导入数据,并将数据保存在该命令中指定的局部变量中。该 cmdlet 根据 $PSUICulture 自动变量的值选择子目录和文件。使用脚本中的本地变量显示用户消息时,将以用户的 UI 语言显示该消息。
可以使用 Import-LocalizedData 的参数来指定备用 UI 区域性、路径和文件名,添加支持的命令,取消显示在未找到 .psd1 文件时出现的错误消息。
在 Windows PowerShell 2.0 中,Import-LocalizedData cmdlet 支持脚本国际化。此计划的目的在于通过使脚本更易于以当前用户的 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[]>
指定仅生成数据的 cmdlet 和函数。
可使用此参数包含已编写或已测试的 cmdlet 和函数。有关详细信息,请参阅 about_Script_Internationalization。
是否为必需? |
false |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-UICulture <string>
指定备用 UI 区域性。默认值为 $PsUICulture 自动变量的值。以“<语言>-<区域>”格式输入 UI 区域性,如 en-US、de-DE 或 ar-SA。
UICulture 参数的值确定语言特定的子目录(在基目录内),Import-LocalizedData 从该子目录获取脚本的 .psd1 文件。
该 cmdlet 搜索与 UICulture 参数或 $PsUICulture 自动变量的值具有相同名称的子目录(如“de-DE”或“ar-SA”)。如果该 cmdlet 找不到该目录或该目录不包含脚本的 .psd1 文件,它会搜索具有语言代码名称的子目录(如“de”或“ar”)。如果它找不到该子目录或 .psd1 文件,该命令将失败,并以脚本中指定的默认语言显示数据。
是否为必需? |
false |
位置? |
2 |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
None 不能通过管道将输入传递给此 cmdlet。 |
输出 |
System.Collections.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 参数的值)中开始该搜索。然后,它会在基目录中搜索与 $PsUICulture 变量的值(或 UICulture 参数的值)具有相同名称的子目录(如“de-DE”或“ar-SA”)。接着,它会在该子目录中搜索与脚本(或 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 变量中。它使用 cmdlet 参数的所有默认值。 如果该命令包含在 C:\test 目录中的 Archives.ps1 脚本中,且 $PsUICulture 自动变量的值为 zh-CN,则 Import-LocalizedData 会导入 C:\test\zh-CN 目录中的 Archives.psd1 文件。
示例 2
C:\PS>import-localizeddata -bindingVariable msgTbl -uiculture ar-SA -filename Simple -baseDirectory C:\Data\Localized 说明 ----------- 此命令将文本字符串导入脚本的 $msgTbl 变量中。 它使用 UICulture 参数来指示该 cmdlet 从 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 子目录中。 该示例的第二部分显示 Test.ps1 脚本的内容。它包含一个 Import-LocalizedData 命令(用于将匹配的 .psd1 文件中的数据导入到 $Messages 变量中)和一个 Write-Host 命令(用于将 $Messages 变量中的一条消息写入主机程序)。 该示例的最后部分运行脚本。输出表明,它用为操作系统的当前用户设置的 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 命令,该命令从 $PsUICulture 变量的值所指定的子目录中的 TestScript.psd1 文件中导入已翻译文本字符串的哈希表。如果该命令找到该 .psd1 文件,则将文件中的已翻译字符串保存到 $UserMessages 变量的值中,覆盖由 DATA 节逻辑保存的哈希表。 第三个命令显示 $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。这两个脚本是相同的,但是 Day2 使用具有 SilentlyContinue 值的 ErrorAction 通用参数。 示例输出显示了当 UI 区域性设置为 fr-BE 且该 UI 区域性没有匹配的文件或目录时运行这两个脚本的结果。Day1.ps1 显示一条错误消息和英文输出。Day2.ps1 只显示英文输出。
另请参阅