Import-LocalizedData (Microsoft.PowerShell.Utility)
Import-LocalizedData
- Модуль:
- Microsoft.PowerShell.Utility
Импортирует данные, специфичные для языка, в сценарии и функции на основе культуры пользовательского интерфейса, выбранной для операционной системы.
Синтаксис
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. :\Данные\Локализованный.
Пример 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- Команда хоста, записывающая одно из сообщений из переменной $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 со значением SililyContinue, чтобы подавить сообщение об ошибке. Это особенно полезно, если вы предоставили пользовательские сообщения на языке по умолчанию или на резервном языке и сообщение об ошибке не требуется.
В этом примере сравниваются два сценария, Day1.ps1 и Day2.ps1, которые включают команду Import-LocalizedData. Сценарии идентичны, за исключением того, что Day2 использует общий параметр ErrorAction со значением SillyContinue.
Пример вывода показывает результаты запуска обоих сценариев, когда для языка и региональных параметров пользовательского интерфейса установлено значение fr-BE и нет соответствующих файлов или каталогов для этого языка и региональных параметров пользовательского интерфейса. 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.
Параметр FileName необходим, если Import-LocalizedData не используется в скрипте. В противном случае этот параметр является необязательным, а значением по умолчанию является базовое имя сценария. Вы можете использовать этот параметр, чтобы направить Import-LocalizedData на поиск другого файла .psd1.
Например, если FileName опущен и имя сценария — FindFiles.ps1, Import-LocalizedData ищет FindFiles.psd1 файл данных.
- Тип :
String
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-SupportedCommand
Указывает командлеты и функции, генерирующие только данные.
Используйте этот параметр, чтобы включить написанные или протестированные вами командлеты и функции. Дополнительные сведения см. в разделе about_Script_Internationalization.
- Тип :
String[]
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-UICulture
Указывает альтернативную культуру пользовательского интерфейса. По умолчанию используется значение автоматической переменной $PsUICulture. Введите язык и региональные параметры пользовательского интерфейса в формате <language>-en-US, de-DE или ar. -СА.
Значение параметра UICulture определяет подкаталог конкретного языка (внутри базового каталога), из которого Import-LocalizedData получает файл .psd1 для сценарий.
Командлет ищет подкаталог с тем же именем, что и значение параметра UICulture или автоматической переменной $PsUICulture, например de-DE. или ar-SA. Если каталог не найден или каталог не содержит файла .psd1 для сценария, он ищет подкаталог с именем кода языка, например de или ar. Если не удается найти подкаталог или файл .psd1, команда завершается неудачно, и данные отображаются на языке по умолчанию, указанном в скрипте.
- Тип :
String
- Позиция:
1
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
Нет
Вы не можете передавать объекты в этот командлет.
Выходы
Хеш-таблица
Этот командлет сохраняет хеш-таблицу в переменной, указанной значением параметра 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 со значением SililyContinue.Если
Import-LocalizedDataнаходит подкаталог и файл.psd1, он импортирует хеш-таблицу пользовательских сообщений в значение параметра BindingVariable в команда. Затем, когда вы отображаете сообщение из хеш-таблицы в переменной, отображается локализованное сообщение.Дополнительные сведения см. в разделе about_Script_Internationalization.