Поделиться через


Import-LocalizedData

Импортирует данные, относящиеся к языку, в скрипты и функции на основе языка и региональных параметров пользовательского интерфейса, выбранного для операционной системы.

Синтаксис

Import-LocalizedData
      [[-BindingVariable] <String>]
      [[-UICulture] <String>]
      [-BaseDirectory <String>]
      [-FileName <String>]
      [-SupportedCommand <String[]>]
      [<CommonParameters>]

Описание

Командлет Import-LocalizedData динамически извлекает строки из подкаталога, имя которого соответствует языку пользовательского интерфейса для текущего пользователя операционной системы. Он предназначен для включения сценариев для отображения сообщений пользователей на языке пользовательского интерфейса, выбранном текущим пользователем.

Import-LocalizedData импортирует данные из .psd1 файлов в подкаталогах конкретного языка каталога скриптов и сохраняет их в локальной переменной, указанной в команде. Командлет выбирает подкаталог и файл на основе значения $PSUICulture автоматической переменной. При использовании локальной переменной в скрипте для отображения сообщения пользователя сообщение отображается на языке пользовательского интерфейса пользователя.

Параметры Import-LocalizedData можно использовать для указания альтернативного языка и региональных параметров пользовательского интерфейса, пути и имени файла, добавления поддерживаемых команд и подавления сообщения об ошибке, которое отображается, если .psd1 файлы не найдены.

Командлет Import-LocalizedData поддерживает инициативу интернационализации скриптов, представленную в Windows PowerShell 2.0. Эта инициатива направлена на улучшение обслуживания пользователей по всему миру, что упрощает отображение сообщений пользователей на языке пользовательского интерфейса текущего пользователя. Дополнительные сведения об этом и формате файлов .psd1 см. в about_Script_Internationalization.

Примеры

Пример 1. Импорт текстовых строк

В этом примере текстовые строки импортируются в переменную $Messages. В нем используются значения по умолчанию всех остальных параметров командлета.

Import-LocalizedData -BindingVariable "Messages"

Если команда включена в скрипт Archives.ps1 в каталоге C:\Test, а значение автоматической переменной $PsUICulture zh-CN, Import-LocalizedData импортирует файл Archives.psd1 в каталог C:\test\zh-CN в переменную $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. Импорт строк языка и региональных параметров пользовательского интерфейса

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

Эта команда импортирует текстовые строки в переменную $MsgTbl скрипта.

Он использует параметр UICulture для перенаправления командлета для импорта данных из файла Simple.psd1 в подкаталоге ar-SAC:\Data\Localized.

Пример 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 находится в подкаталоге en-US каталога C:\Test, содержащего скрипт.

Вторая часть примера показывает содержимое скрипта Test.ps1. Он содержит команду Import-LocalizedData, которая импортирует данные из соответствующего файла .psd1 в переменную $Messages и команду Write-Host, которая записывает одно из сообщений в переменной $Messages в хост-программу.

Последняя часть примера запускает скрипт. В выходных данных показано, что отображается правильное сообщение пользователя на языке пользовательского интерфейса для текущего пользователя операционной системы.

Пример 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...

В этом примере раздел DATA скрипта TestScript.ps1 содержит команду ConvertFrom-StringData, которая преобразует содержимое раздела DATA в хэш-файл и сохраняет значение переменной $UserMessages.

Скрипт также содержит команду Import-LocalizedData, которая импортирует хэш-таблицы переведенных текстовых строк из файла TestScript.psd1 в подкаталоге, заданном значением переменной $PsUICulture. Если команда находит файл .psd1, он сохраняет переведенные строки из файла в значении той же переменной $UserMessages, перезаписав хэш-файл, сохраненный логикой раздела DATA.

Третья команда отображает первое сообщение в переменной $UserMessages.

Если команда Import-LocalizedData находит файл .psd1 для языка $PsUICulture, значение переменной $UserMessages содержит переведенные текстовые строки. Если команда завершается ошибкой по какой-либо причине, команда отображает текстовые строки по умолчанию, определенные в разделе DATA скрипта.

Пример 6. Подавление сообщений об ошибках, если язык и региональные параметры пользовательского интерфейса не найдены

В этом примере показано, как отключить сообщения об ошибках, которые отображаются, когда Import-LocalizedData не удается найти каталоги, соответствующие языку пользовательского интерфейса пользователя или не удается найти файл .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

Для подавления сообщения об ошибке можно использовать ErrorAction общий параметр со значением SilentlyContinue. Это особенно полезно, если вы предоставили пользовательские сообщения на языке по умолчанию или резервном языке, и сообщение об ошибке не требуется.

В этом примере сравниваются два скрипта, Day1.ps1 и Day2.ps1, которые включают команду Import-LocalizedData. Скрипты идентичны, за исключением того, что Day2 использует ErrorAction общий параметр со значением SilentlyContinue.

В примере выходных данных показаны результаты выполнения обоих скриптов, если для языка и региональных параметров пользовательского интерфейса задано значение fr-BE и отсутствуют соответствующие файлы или каталоги для этого языка и региональных параметров пользовательского интерфейса. Day1.ps1 отображается сообщение об ошибке и выходные данные английского языка. Day2.ps1 просто отображает выходные данные английского языка.

Параметры

-BaseDirectory

Указывает базовый каталог, в котором находятся файлы .psd1. По умолчанию используется каталог, в котором находится скрипт. Import-LocalizedData выполняет поиск файла .psd1 скрипта в подкаталоге базового каталога для конкретного языка.

Тип:String
Position:Named
Default value: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
Aliases:Variable
Position:0
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-FileName

Указывает имя файла данных (.psd1) для импорта. Введите имя файла. Можно указать имя файла, не включающее расширение имени файла .psd1, или указать имя файла, включая расширение имени файла .psd1. Файлы данных должны сохраняться как Юникод или UTF-8.

Параметр FileName требуется, если Import-LocalizedData не используется в скрипте. В противном случае параметр является необязательным, а значение по умолчанию — базовое имя скрипта. Этот параметр можно использовать для прямого Import-LocalizedData для поиска другого файла .psd1.

Например, если Имя файла опущено, а имя скрипта FindFiles.ps1, Import-LocalizedData ищет файл данных FindFiles.psd1.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-SupportedCommand

Задает командлеты и функции, которые создают только данные.

Используйте этот параметр для включения командлетов и функций, написанных или протестированных. Дополнительные сведения см. в about_Script_Internationalization.

Тип:String[]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-UICulture

Задает альтернативный язык и региональные параметры пользовательского интерфейса. Значением по умолчанию является $PsUICulture автоматическая переменная. Введите язык и региональные параметры пользовательского интерфейса в формате <language>-<region>, например en-US, de-DEили ar-SA.

Значение параметра UICulture определяет подкаталог для конкретного языка (в базовом каталоге), из которого Import-LocalizedData получает файл .psd1 для скрипта.

Командлет выполняет поиск подкаталога с тем же именем, что и значение параметра UICulture или автоматической переменной $PsUICulture, например de-DE или ar-SA. Если он не может найти каталог или каталог не содержит .psd1 файл для скрипта, он ищет подкаталог с именем языкового кода, например de или ar. Если не удается найти подкаталог или файл .psd1, команда завершается ошибкой, и данные отображаются на языке по умолчанию, указанном в скрипте.

Тип:String
Position:1
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

None

Невозможно передать объекты в этот командлет.

Выходные данные

Hashtable

Этот командлет сохраняет хэш-файл в переменной, указанной значением параметра BindingVariable.

Примечания

  • Перед использованием Import-LocalizedDataлокализуйте сообщения пользователя. Отформатируйте сообщения для каждого языкового стандарта (языка и региональных параметров) в хэш-таблицу пар "ключ-значение" и сохраните хэш-таблицу в файле с тем же именем, что и скрипт и расширение имени файла .psd1. Создайте каталог в каталоге скриптов для каждого поддерживаемого языка и региональных параметров пользовательского интерфейса, а затем сохраните файл .psd1 для каждого языка и региональных параметров пользовательского интерфейса в каталоге с именем языка и региональных параметров пользовательского интерфейса.

    Например, локализуйте сообщения пользователя для языкового стандарта de-DE и отформатируйте их в хэш-таблицы. Сохраните хэш-файл в файле <ScriptName>.psd1. Затем создайте подкаталог de-DE в каталоге скриптов и сохраните файл немецкого <ScriptName>.psd1 в подкаталоге de-DE. Повторите этот метод для каждого поддерживаемого языкового стандарта.

  • Import-LocalizedData выполняет структурированный поиск локализованных пользовательских сообщений для скрипта.

    Import-LocalizedData начинает поиск в каталоге, где находится файл скрипта (или значение параметра baseDirectory BaseDirectory). Затем он выполняет поиск в базовом каталоге подкаталога с тем же именем, что и значение переменной $PsUICulture (или значение параметра UICulture), например de-DE или ar-SA. Затем он выполняет поиск в этом подкаталоге для файла .psd1 с тем же именем, что и скрипт (или значение параметра FileName).

    Если Import-LocalizedData не удается найти подкаталог с именем языка и региональных параметров пользовательского интерфейса, либо подкаталог не содержит файл .psd1 для скрипта, он ищет файл .psd1 для скрипта в подкаталоге с именем языкового кода, например de или ar. Если он не может найти подкаталог или файл .psd1, команда завершается ошибкой, данные отображаются на языке по умолчанию в скрипте, и отображается сообщение об ошибке, объясняющее, что данные не удалось импортировать. Чтобы отключить сообщение и завершить ошибку, используйте ErrorAction общий параметр со значением SilentlyContinue.

    Если Import-LocalizedData находит подкаталог и файл .psd1, он импортирует хэш-таблицы сообщений пользователей в значение параметра bindingVariable bindingVariable в команде. Затем при отображении сообщения из хэш-файла в переменной отображается локализованное сообщение.

    Дополнительные сведения см. в about_Script_Internationalization.