Import-LocalizedData
根据为操作系统选择的 UI 区域性,将特定于语言的数据导入脚本和函数。
语法
Default (默认值)
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 文件时显示的错误消息。
Import-LocalizedData cmdlet 支持 Windows PowerShell 2.0 中引入的脚本国际化计划。 此计划旨在通过简化脚本以当前用户的 UI 语言显示用户消息,从而更好地为全球用户提供服务。 有关此文件以及 .psd1 文件格式的详细信息,请参阅about_Script_Internationalization。
示例
示例 1:导入文本字符串
PS C:\> Import-LocalizedData -BindingVariable "Messages"
此命令将文本字符串导入$Messages变量。 它使用所有其他 cmdlet 参数的默认值。
如果命令包含在 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 参数指示 cmdlet 从 C:\Data\Localized 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 子目录中。
该示例的第二部分显示 Test.ps1 脚本的内容。 它包含一个 Import-LocalizedData 命令,该命令将数据从匹配的 .psd1 文件导入$Messages变量,以及一个 Write-Host 命令,该命令将$Messages变量中的其中一条消息写入主机程序。
示例的最后一部分运行脚本。 输出显示它在操作系统当前用户的 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 节包含一个 ConvertFrom-StringData 命令,该命令将 DATA 节的内容转换为哈希表,并将其存储在$UserMessages变量的值中。
该脚本还包括一个 Import-LocalizedData 命令,该命令从$PsUICulture变量的值指定的子目录中的 TestScript.psd1 文件中导入已翻译文本字符串的哈希表。 如果命令找到 .psd1 文件,则会将文件中转换后的字符串保存在同一$UserMessages变量的值中,覆盖 DATA 节逻辑保存的哈希表。
第三个命令显示$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 命令
示例输出显示当 UI 区域性设置为 fr-BE 且该 UI 区域性没有匹配的文件或目录时运行这两个脚本的结果。 Day1.ps1 显示错误消息和英语输出。 Day2.ps1 只显示英语输出。
参数
-BaseDirectory
指定 .psd1 文件所在的基目录。 默认值是脚本所在的目录。 Import-LocalizedData 在基目录的语言特定子目录中搜索脚本的 .psd1 文件。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-BindingVariable
指定将文本字符串导入到其中的变量。 输入无美元符号的变量名称($)。
在 Windows PowerShell 2.0 中,此参数是必需的。 在 Windows PowerShell 3.0 中,此参数是可选的。 如果省略此参数,Import-LocalizedData 返回文本字符串的哈希表。 哈希表会向下传递管道或显示在命令行中。
使用 Import-LocalizedData 替换脚本的 DATA 节中指定的默认文本字符串时,请将 DATA 节分配给变量,并在 BindingVariable 参数的值中输入 DATA 节变量的名称。 然后,Import-LocalizedData 将导入的内容保存在 BindingVariable中时,导入的数据将替换默认文本字符串。 如果未指定默认文本字符串,则可以选择任何变量名称。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
| 别名: | 变量 |
参数集
(All)
| Position: | 0 |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-FileName
指定要导入的数据文件的名称(.psd1)。 输入文件名。 可以指定不包含其 .psd1 文件扩展名的文件名,也可以指定文件名(包括 .psd1 文件扩展名)。 数据文件应另存为 Unicode 或 UTF-8。
在脚本中不使用 import-LocalizedData 时,需要使用
例如,如果省略 FileName,并且脚本名称 FindFiles.ps1,Import-LocalizedData 搜索 FindFiles.psd1 数据文件。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-SupportedCommand
指定仅生成数据的 cmdlet 和函数。
使用此参数可包含已编写或测试的 cmdlet 和函数。 有关详细信息,请参阅about_Script_Internationalization。
参数属性
| 类型: | String[] |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-UICulture
指定备用 UI 区域性。 默认值为$PsUICulture自动变量的值。 以 <语言>-<区域> 格式(如 en-US、de-DE或 ar-SA)输入 UI 区域性。
UICulture 参数的值确定 Import-LocalizedData 获取脚本的 .psd1 文件的语言特定子目录(在基目录中)。
该 cmdlet 搜索与 UICulture 参数或$PsUICulture自动变量(如 de-DE 或 ar-SA)的值相同的子目录。 如果找不到目录,或者该目录不包含脚本的 .psd1 文件,则它会搜索语言代码的名称(如 de 或 ar)的子目录。 如果找不到子目录或 .psd1 文件,该命令将失败,并且数据以脚本中指定的默认语言显示。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | 1 |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
None
不能通过管道将输入传递给此 cmdlet。
输出
Hashtable
Import-LocalizedData 将哈希表保存在由 BindingVariable 参数的值指定的变量中。
备注
在使用 Import-LocalizedData之前,请本地化用户消息。 设置键/值对哈希表中每个区域设置(UI 区域性)的消息的格式,并将哈希表保存在与脚本和 .psd1 文件扩展名相同的文件中。 为每个受支持的 UI 区域性创建脚本目录下的目录,然后使用 UI 区域性名称在目录中保存每个 UI 区域性的 .psd1 文件。
例如,本地化 de-DE 区域设置的用户消息,并将其格式化在哈希表中。 将哈希表保存在 <ScriptName>.psd1 文件中。 然后在脚本目录下创建 de-DE 子目录,并将 de-DE <ScriptName>.psd1 文件保存在 de-DE 子目录中。 对支持的每个区域设置重复此方法。
Import-LocalizedData 对脚本的本地化用户消息执行结构化搜索。
Import-LocalizedData 在脚本文件所在的目录中开始搜索(或 BaseDirectory 参数的值)。 然后,在基目录中搜索与$PsUICulture变量的值相同的子目录(或 UICulture 参数的值),例如 de-DE 或 ar-SA。 然后,它会在该子目录中搜索与脚本同名的 .psd1 文件(或 FileName 参数的值)。
如果 Import-LocalizedData 找不到具有 UI 区域性名称的子目录,或者子目录不包含脚本的 .psd1 文件,则会使用语言代码的名称(如 de 或 ar)在子目录中搜索脚本的 .psd1 文件。 如果找不到子目录或 .psd1 文件,该命令将失败,该数据以脚本中的默认语言显示,并显示一条错误消息,说明无法导入数据。 若要取消消息并正常失败,请使用 ErrorAction 具有 SilentlyContinue 值的常见参数。
如果 Import-LocalizedData 找到子目录和 .psd1 文件,它将用户消息的哈希表导入命令中 BindingVariable 参数的值。 然后,当在变量中显示哈希表中的消息时,将显示本地化消息。
有关详细信息,请参阅about_Script_Internationalization(https://go.microsoft.com/fwlink/?LinkID=113262)。