当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 导入本地化数据 (Microsoft.PowerShell.Utility)

作者:精品下载站 日期:2024-12-14 02:05:50 浏览:16 分类:玩电脑

导入本地化数据 (Microsoft.PowerShell.Utility)


Import-LocalizedData

模块 :Microsoft.PowerShell.Utility

根据为操作系统选择的 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 时出现的错误消息。代码> 未找到文件。

Import-LocalizedData cmdlet 支持 Windows PowerShell 2.0 中引入的脚本国际化计划。该举措旨在让脚本能够轻松地以当前用户的 UI 语言显示用户消息,从而更好地服务全球用户。有关此内容以及 .psd1 文件格式的详细信息,请参阅 about_Script_Internationalization。

示例

示例 1:导入文本字符串

此示例将文本字符串导入到 $Messages 变量中。它使用所有其他 cmdlet 参数的默认值。

Import-LocalizedData -BindingVariable "Messages"

如果该命令包含在 C:\Test 目录下的 Archives.ps1 脚本中,且 $PsUICulture 自动变量的值为 zh-CN,则 Import-LocalizedDataC:\test\zh-CN目录下的Archives.psd1文件导入到$Messages变量中。

示例 2:导入本地化数据字符串

此示例在命令行而不是在脚本中运行。它从 Test.psd1 文件获取本地化数据字符串并在命令行中显示它们。由于脚本中未使用该命令,因此需要 FileName 参数。该命令使用 UICulture 参数指定 en-US 区域性。

Import-LocalizedData -FileName "Test.psd1" -UICulture "en-US"

Name           Value
----           -----
Msg3           "Use $_ to represent the object that's 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."

Import-LocalizedData 返回包含本地化数据字符串的哈希表。

示例 3:导入 UI 区域性字符串

Import-LocalizedData -BindingVariable "MsgTbl" -UICulture "ar-SA" -FileName "Simple" -BaseDirectory "C:\Data\Localized"

此命令将文本字符串导入到脚本的 $MsgTbl 变量中。

它使用 UICulture 参数指示 cmdlet 从 C 的 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's 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:替换脚本中的默认文本字符串

此示例演示如何使用 Import-LocalizedData 替换脚本 DATA 部分中定义的默认文本字符串。

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...

在此示例中,TestScript.ps1 脚本的 DATA 部分包含一个 ConvertFrom-StringData 命令,该命令将 DATA 部分的内容转换为哈希表,并将值存储在 $UserMessages 变量。

该脚本还包含一个 Import-LocalizedData 命令,该命令从 $PsUICulture 变量值指定的子目录中的 TestScript.psd1 文件导入已翻译文本字符串的哈希表。如果该命令找到 .psd1 文件,它会将文件中翻译后的字符串保存在同一 $UserMessages 变量的值中,覆盖 DATA 部分逻辑保存的哈希表。

第三条命令显示 $UserMessages 变量中的第一条消息。

如果 Import-LocalizedData 命令找到 $PsUICulture 语言的 .psd1 文件,则 $UserMessages 的值> 变量包含翻译后的文本字符串。如果该命令由于任何原因失败,该命令将显示脚本的 DATA 部分中定义的默认文本字符串。

示例 6:如果未找到 UI 区域性,则禁止显示错误消息

此示例演示如何抑制当 Import-LocalizedData 找不到与用户 UI 区域性匹配的目录或找不到 .psd1 文件时出现的错误消息对于这些目录中的脚本。

PS C:\> # In Day1.ps1

Import-LocalizedData -BindingVariable "Day"

# In Day2.ps1

Import-LocalizedData -BindingVariable "Day" -ErrorAction:SilentlyContinue

PS C:\> .\Day1.ps1
Import-LocalizedData : Can't 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

您可以使用值为 SilentlyContinue 的 ErrorAction 公共参数来抑制错误消息。当您以默认或后备语言提供用户消息并且不需要错误消息时,这尤其有用。

此示例比较两个脚本 Day1.ps1 和 Day2.ps1,其中包含 Import-LocalizedData 命令。这些脚本是相同的,只是 Day2 使用值为 SilentlyContinueErrorAction 公共参数。

示例输出显示了当 UI 区域性设置为 fr-BE 并且该 UI 区域性没有匹配的文件或目录时运行这两个脚本的结果。 Day1.ps1 显示错误消息和英文输出。 Day2.ps1 仅显示英文输出。

参数

-BaseDirectory

指定 .psd1 文件所在的基目录。默认是脚本所在的目录。 Import-LocalizedData 在基目录的特定于语言的子目录中搜索脚本的 .psd1 文件。

类型 :

String

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-BindingVariable

指定将文本字符串导入到的变量。输入不带美元符号的变量名称 ($)。

在 Windows PowerShell 2.0 中,此参数是必需的。在 Windows PowerShell 3.0 中,此参数是可选的。如果省略此参数,Import-LocalizedData 将返回文本字符串的哈希表。哈希表沿着管道传递或显示在命令行上。

使用 Import-LocalizedData 替换脚本 DATA 部分中指定的默认文本字符串时,请将 DATA 部分分配给变量,并在 的值中输入 DATA 部分变量的名称。 BindingVariable 参数。然后,当Import-LocalizedData将导入的内容保存在BindingVariable中时,导入的数据将替换默认的文本字符串。如果您没有指定默认文本字符串,则可以选择任何变量名称。

类型 :

String

别名:

Variable

位置:

0

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-FileName

指定要导入的数据文件 (.psd1) 的名称。输入文件名。您可以指定不包含 .psd1 文件扩展名的文件名,也可以指定包含 .psd1 文件扩展名的文件名。数据文件应保存为 Unicode 或 UTF-8。

当脚本中未使用 Import-LocalizedData 时,需要 FileName 参数。否则,该参数是可选的,默认值是脚本的基本名称。您可以使用此参数指示 Import-LocalizedData 搜索不同的 .psd1 文件。

例如,如果省略 FileName 且脚本名称为 FindFiles.ps1,则 Import-LocalizedData 搜索 FindFiles.psd1数据文件。

类型 :

String

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-SupportedCommand

指定仅生成数据的 cmdlet 和函数。

使用此参数可以包含您已编写或测试的 cmdlet 和函数。有关详细信息,请参阅 about_Script_Internationalization。

类型 :

String[]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-UICulture

指定备用 UI 区域性。默认值为 $PsUICulture 自动变量的值。以 <language>-.psd1 文件中。然后在脚本目录下创建一个de-DE子目录,并将德语<ScriptName>.psd1文件保存在de-DE子目录中。对您支持的每个区域设置重复此方法。

  • Import-LocalizedData 对脚本的本地化用户消息执行结构化搜索。

    Import-LocalizedData 开始在脚本文件所在的目录(或 BaseDirectory 参数的值)中搜索。然后,它在基目录中搜索与 $PsUICulture 变量的值(或 UICulture 参数的值)同名的子目录,例如 de-DEar-SA。然后,它在该子目录中搜索与脚本同名(或 FileName 参数的值)的 .psd1 文件。

    如果 Import-LocalizedData 找不到具有 UI 区域性名称的子目录,或者该子目录不包含脚本的 .psd1 文件,它将搜索子目录中脚本的 .psd1 文件,其名称为语言代码,例如 de 或 ar。如果找不到子目录或 .psd1 文件,则命令失败,数据以脚本中的默认语言显示,并显示一条错误消息,解释无法导入数据。要抑制消息并正常失败,请使用值为 SilentlyContinue 的 ErrorAction 公共参数。

    如果 Import-LocalizedData 找到子目录和 .psd1 文件,则会将用户消息的哈希表导入到 BindingVariable 参数的值中命令。然后,当您在变量中显示哈希表中的消息时,将显示本地化的消息。

    有关详细信息,请参阅 about_Script_Internationalization。

  • 您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯