Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Краткое описание
Описывает функции интернационализации скриптов, которые упрощают отображение сообщений и инструкций пользователям на языке пользовательского интерфейса.
Длинное описание
Функции интернационализации сценариев PowerShell позволяют лучше обслуживать пользователей по всему миру, отображая справку и сообщения пользователей на языке пользователя.
Функции интернационализации скрипта запрашивают культуру пользовательского интерфейса операционной системы во время выполнения, импортируют соответствующие переведенные текстовые строки и отображают их пользователю. В разделе "Данные" можно хранить текстовые строки отдельно от кода, чтобы они легко идентифицировались и извлекаются. Новый командлет, ConvertFrom-StringData, преобразует текстовые строки в хэш-таблицы, такие как словарь, для упрощения перевода.
Для поддержки международного текста справки PowerShell включает следующие функции:
Раздел данных, разделяющий текстовые строки от инструкций кода. Дополнительные сведения о разделе "Данные" см. в about_Data_Sections.
Новые автоматические переменные,
$PSCultureи$PSUICulture.$PSCultureсохраняет имя языка пользовательского интерфейса, используемого в системе для таких элементов, как дата, время и валюта. Переменная$PSUICultureсохраняет имя языка пользовательского интерфейса, используемого в системе для элементов пользовательского интерфейса, таких как меню и текстовые строки.Командлет,
ConvertFrom-StringData, который преобразует текстовые строки в хэш-таблицы, подобные словарям, для упрощения перевода. Дополнительные сведения см. в разделе ConvertFrom-StringData.Новый тип файла,
.psd1, в который хранятся переведенные текстовые строки. Файлы.psd1хранятся в подкаталогах для конкретного языка каталога скриптов.Командлет,
Import-LocalizedData, который импортирует переведённые текстовые строки для указанного языка в скрипт в процессе выполнения. Этот командлет распознает и импортирует строки на любом поддерживаемом Windows языке. Дополнительные сведения см. в разделе Import-LocalizedData.
Раздел данных: хранение строк по умолчанию
Используйте раздел "Данные" в скрипте для хранения текстовых строк на языке по умолчанию. Упорядочение строк в парах "ключ-значение" в строке здесь. Каждая пара "ключ-значение" должна находиться в отдельной строке. Если вы включаете примечания, комментарии должны находиться в отдельных строках.
Командлет ConvertFrom-StringData преобразует пары "ключ-значение" в строке here-string в таблицу хэша, похожую на словарь, которая хранится в значении переменной раздела данных.
В следующем примере раздел Data скрипта World.ps1 включает набор сообщений подсказок English-United Штаты (en-US) для скрипта. Командлет ConvertFrom-StringData преобразует строки в хэш-таблицу и сохраняет их в переменной $msgtable.
$msgTable = data {
#culture="en-US"
ConvertFrom-StringData @'
helloWorld = Hello, World.
errorMsg1 = You cannot leave the user name field blank.
promptMsg = Please enter your user name.
'@
}
Дополнительные сведения о строках здесь см. в about_Quoting_Rules.
Файлы PSD1: хранение переведенных строк
Сохраните сообщения скрипта для каждого языка пользовательского интерфейса в отдельных текстовых файлах с тем же именем, что и скрипт и расширение имени файла .psd1. Сохраните файлы в подкаталогах каталога скриптов с названиями культур в следующем формате:
<language>-<region>
Примеры: de-DE, ar-SAи zh-Hans
Например, если скрипт World.ps1 хранится в каталоге C:\Scripts, вы создадите структуру каталогов файлов, похожую на следующую:
C:\Scripts
C:\Scripts\World.ps1
C:\Scripts\de-DE\World.psd1
C:\Scripts\ar-SA\World.psd1
C:\Scripts\zh-CN\World.psd1
...
Файл World.psd1 в подкаталоге de-DE каталога скриптов может содержать следующую инструкцию:
ConvertFrom-StringData -StringData @'
helloWorld = Hallo, Welt.
errorMsg1 = Das Feld Benutzername darf nicht leer sein.
promptMsg = Geben Sie Ihren Benutzernamen ein.
'@
Аналогичным образом файл World.psd1 в подкаталоге ar-SA каталога скриптов может содержать следующую инструкцию:
ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@
Import-LocalizedData: динамическое извлечение переведенных строк
Чтобы получить строки на языке пользовательского интерфейса текущего пользователя, используйте командлет Import-LocalizedData.
Import-LocalizedData находит значение автоматической переменной $PSUICulture и импортирует содержимое файлов <script-name>.psd1 в подкаталоге, которое соответствует значению $PSUICulture. Затем он сохраняет импортированное содержимое в переменной, указанной значением параметра BindingVariable.
Import-LocalizedData -BindingVariable msgTable
Например, если команда Import-LocalizedData отображается в скрипте C:\Scripts\World.ps1, а значение $PSUICulture — "ar-SA", Import-LocalizedData находит следующий файл:
C:\Scripts\ar-SA\World.psd1
Затем он импортирует арабские текстовые строки из файла в переменную $msgTable, заменив все строки по умолчанию, которые могут быть определены в разделе "Данные" скрипта World.ps1.
В результате, когда скрипт использует переменную $msgTable для отображения сообщений пользователей, сообщения отображаются на арабском языке.
Например, в следующем скрипте отображается сообщение "Введите имя пользователя" на арабском языке:
if (!($username)) { $msgTable.promptMsg }
Если Import-LocalizedData не удается найти файл .psd1, соответствующий значению $PSUICulture, значение $msgTable не заменено, а вызов $msgTable.promptMsg отображает резервные строки en-US.
Примеры
В этом примере показано, как функции интернационализации скрипта используются в скрипте для отображения дня недели пользователям на языке, заданном на компьютере.
Ниже приведен полный список файла скрипта Sample1.ps1.
Скрипт начинается с раздела данных с именем Day ($Day), который содержит команду ConvertFrom-StringData. Выражение, отправленное в ConvertFrom-StringData, — это строка, содержащая имена дней в языках и региональных параметрах пользовательского интерфейса по умолчанию en-USв парах "ключ-значение". Командлет ConvertFrom-StringData преобразует пары "ключ-значение" в строку здесь в хэш-таблицу, а затем сохраняет ее в значении переменной $Day.
Команда Import-LocalizedData импортирует содержимое файла .psd1 в каталоге, который соответствует значению автоматической переменной $PSUICulture, а затем сохраняет его в переменной $Day, заменив значения $Day, определенные в разделе данных.
Остальные команды загружают строки в массив и отображают их.
$Day = data {
#culture="en-US"
ConvertFrom-StringData -StringData @'
messageDate = Today is
d0 = Sunday
d1 = Monday
d2 = Tuesday
d3 = Wednesday
d4 = Thursday
d5 = Friday
d6 = Saturday
'@
}
Import-LocalizedData -BindingVariable Day
#Build an array of weekdays.
$a = $Day.d0, $Day.d1, $Day.d2, $Day.d3, $Day.d4, $Day.d5, $Day.d6
# Get the day of the week as a number (Monday = 1).
# Index into $a to get the name of the day.
# Use string formatting to build a sentence.
"{0} {1}" -f $Day.messageDate, $a[(Get-Date -UFormat %u)] | Out-Host
Файлы .psd1, поддерживающие скрипт, сохраняются в подкаталогах каталога скриптов с именами, соответствующими значениям $PSUICulture.
Ниже приведен полный список .\de-DE\sample1.psd1:
# culture="de-DE"
ConvertFrom-StringData @'
messageDate = Heute ist
d0 = Sonntag
d1 = Montag
d2 = Dienstag
d3 = Mittwoch
d4 = Donnerstag
d5 = Freitag
d6 = Samstag
'@
В результате при запуске Sample.ps1 на системе, где значение $PSUICulture de-DE, результат работы скрипта:
Heute ist Freitag
См. также
PowerShell