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

Синтаксис

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.

Параметры

-BaseDirectory <string>

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

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-BindingVariable <string>

Задает переменную, в которую импортируются текстовые строки. Указывается имя переменной (без знака доллара).

При использовании командлета Import-LocalizedData для замены текстовых строк по умолчанию, заданных в разделе DATA скрипта, присвойте раздел DATA переменной и укажите ее имя в качестве значения параметра BindingVariable. В этом случае при сохранении командлетом 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[]>

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

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

Обязательно?

false

Позиция?

named

Значение по умолчанию

нет

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-UICulture <string>

Задает альтернативную культуру пользовательского интерфейса. Значением по умолчанию является автоматическая переменная $PsUICulture. Укажите культуру пользовательского интерфейса в формате "<язык>-<регион>", например en-US, de-DE или ru-RU.

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

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

Обязательно?

false

Позиция?

2

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

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

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

Нет

Передать входные данные этому командлету по конвейеру невозможно.

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

System.Collections.Hashtable

Командлет Import-LocalizedData сохраняет хэш-таблицу в переменной, указанной в качестве значения параметра BindingVariable.

Примечания

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

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

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

Import-LocalizedData начинает поиск с каталога, в котором находится файл скрипта, или каталога, заданного параметром BaseDirectory. Он осуществляет поиск в базовом каталоге подкаталога с именем, совпадающим со значением переменной $PsUICulture или значением параметра UICulture, например "de-DE" или "ru-RU". После этого он осуществляет в подкаталоге поиск файла PSD1 с именем, совпадающим с именем скрипта или значением параметра FileName.

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

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

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

Пример 1

C:\PS>import-localizeddata -bindingVariable messages

Описание
-----------
Эта команда импортирует текстовые строки в переменную $messages. Она использует все значения по умолчанию параметров командлета.

Если команда включена в скрипт Archives.ps1 в каталоге C:\test, а автоматическая переменная $PsUICulture имеет значение zh-CN, командлет Import-LocalizedData импортирует файл Archives.psd1 в каталог C:\test\zh-CN.






Пример 2

C:\PS>import-localizeddata -bindingVariable msgTbl -uiculture ar-SA -filename Simple -baseDirectory C:\Data\Localized

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

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






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

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

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






Пример 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 скрипта.

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

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

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

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

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

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

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






См. также




Содержание