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


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

Вторая часть примера показывает содержимое скрипта 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-USde-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 ). Затем он выполняет поиск в базовом каталоге подкаталога с тем же именем, что и значение переменной (или значение $PsUICulture параметра UICulture ), например de-DE или ar-SA. Затем он выполняет поиск в этом подкаталоге для .psd1 файла с тем же именем, что и скрипт (или значение параметра FileName ).

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

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

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