Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0
РАЗДЕЛ
about_Script_Internationalization
КРАТКОЕ ОПИСАНИЕ
Описание возможностей интернационализации сценариев Windows PowerShell® 2.0, которые упрощают отображение сообщений и инструкций для пользователей на языке их пользовательского интерфейса.
ПОДРОБНОЕ ОПИСАНИЕ
Функции интернационализации сценариев Windows PowerShell позволяют более эффективно обслуживать пользователей по всему миру за счет отображения разделов справки и сообщений для сценариев и функций на языке пользовательского интерфейса.
Функции интернационализации сценариев запрашивают язык и региональные параметры пользовательского интерфейса операционной системы во время выполнения, импортируют соответствующие переведенные текстовые строки и отображают их пользователю. В разделе Data можно хранить текстовые строки отдельно от кода, поэтому их можно легко идентифицировать и извлекать. Новый командлет ConvertFrom-StringData преобразует текстовые строки в подобные словарю хэш-таблицы для облегчения перевода.
Функции Windows PowerShell 2.0, используемые для интернационализации сценариев, не поддерживаются в Windows PowerShell 1.0. Сценарии, содержащие эти функции, не будут выполняться в Windows PowerShell 1.0 без внесения в них изменений.
Windows PowerShell 2.0 предлагает следующие возможности для поддержки международного текста справки.
– Раздел Data, отделяющий текстовые строки от инструкций кода. Дополнительные сведения о разделе Data см. в разделе about_Data_Sections.
– Новые автоматические переменные $PSCulture и $PSUICulture. $PSCulture сохраняет имя языка пользовательского интерфейса, используемого в системе для таких элементов, как дата, время и денежные единицы. Переменная $PSUICulture сохраняет имя языка пользовательского интерфейса, используемого в системе для элементов пользовательского интерфейса, таких как меню и текстовые строки.
– Командлет ConvertFrom-StringData, который преобразует текстовые строки в подобные словарю хэш-таблицы для облегчения перевода. Дополнительные сведения см. в разделе ConvertFrom-StringData.
– Новый тип файла PSD1, в котором хранятся переведенные текстовые строки. PSDd1-файлы хранятся в языковых подкаталогах каталога сценариев.
– Командлет Import-LocalizedData, который импортирует переведенные текстовые строки для указанного языка в сценарий во время выполнения. Этот командлет распознает и импортирует строки на любом языке, поддерживаемом Windows. Дополнительные сведения см. в разделе Import-LocalizedData.
РАЗДЕЛ DATA: ХРАНЕНИЕ СТРОК ПО УМОЛЧАНИЮ
Раздел Data в сценарии позволяет сохранять текстовые строки на языке по умолчанию. Строки следует упорядочить в пары «ключ-значение» в here-строке. Каждая пара «ключ-значение» должна находиться на отдельной строке. Добавляемые комментарии также должны располагаться на отдельных строках.
Командлет ConvertFrom-StringData преобразует пары «ключ-значение» в here-строке в подобную словарю хэш-таблицу, хранящуюся в значении переменной раздела Data.
В следующем примере раздел Data сценария World.ps1 содержит набор сообщений запросов для сценария (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.
'@
}
Дополнительные сведения о here-строках см. в разделе 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 @'
helloWorld = Hello, World (in German).
errorMsg1 = You cannot leave the user name field blank (in German).
promptMsg = Please enter your user name (in German).
'@
Аналогичным образом, файл World.psd1 в подкаталоге ar-SA каталога сценария может включать в себя следующий оператор.
ConvertFrom-StringData @'
helloWorld = Hello, World (in Arabic).
errorMsg1 = You cannot leave the user name field blank (in Arabic).
promptMsg = Please enter your user name (in Arabic).
'@
IMPORT-LOCALIZEDDATA: ДИНАМИЧЕСКОЕ ПОЛУЧЕНИЕ ПЕРЕВЕДЕННЫХ СТРОК
Для извлечения строк в языке пользовательского интерфейса текущего пользователя используется командлет Import-LocalizedData. Вставьте текст раздела.
Командлет Import-LocalizedData находит значение автоматической переменной $PSUICulture и импортирует содержимое 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, заменяя все строки по умолчанию, которые могут быть определены в разделе Data сценария World.ps1.
В результате, когда сценарий использует переменную $msgTable для отображения сообщений пользователя, сообщения отображаются на арабском языке.
Например, следующий сценарий выводит сообщение «Введите имя пользователя» на арабском языке.
if (!($username)) { $msgTable.promptMsg }
Если команде LocalizedData не удается найти PSD1-файл, совпадающий со значением переменной $PSUICulture, значение переменной $msgTable не заменяется и при вызове $msgTable.promptMsg отображаются резервные строки en-US.
ПРИМЕР
В этом примере показано использование возможностей интернационализации сценариев для отображения дня недели на языке, который установлен на компьютере.
Далее приведен полный листинг файла сценария Sample1.ps1.
Сценарий начинается с раздела Data с именем Day ($Day), который содержит команду ConvertFrom-StringData. Выражение, переданное в команду ConvertFrom-StringData, является here-строкой, которая содержит названия дней на языке пользовательского интерфейса по умолчанию (en-US) в парах «ключ-значение». Командлет ConvertFrom-StringData преобразует пары «ключ-значение» в here-строке в хэш-таблицу и затем сохраняет их в значении переменной $Day.
Команда Import-LocalizedData импортирует содержимое PDS1-файла в каталоге, который соответствует значению автоматической переменной $PSUICulture, а затем сохраняет его в переменной $Day, заменив значения $Day, определенные в разделе Data.
Остальные команды загружают строки в массив и отображают их.
$Day = DATA {
# culture=\"en-US\"
ConvertFrom-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 = Today is
d0 = Sunday (in German)
d1 = Monday (in German)
d2 = Tuesday (in German)
d3 = Wednesday (in German)
d4 = Thursday (in German)
d5 = Friday (in German)
d6 = Saturday (in German)
'@
В результате при запуске Sample.ps1 в системе, в которой переменная $PSUICulture имеет значение de-DE, выводится следующий результат выполнения сценария.
Today is Friday (in German)
СМ. ТАКЖЕ
about_Data_Sections
about_Automatic_Variables
about_Hash_Tables
about_Quoting_Rules
ConvertFrom-StringData
Import-LocalizedData