Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Краткое описание
Описывает функции интернационализации скриптов, которые упрощают отображение сообщений и инструкций пользователям на языке пользовательского интерфейса.
Длинное описание
Функции интернационализации сценариев 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