РАЗДЕЛ
	about_Script_Internationalization

КРАТКОЕ ОПИСАНИЕ
	Описание возможностей интернационализации скриптов Windows 
	PowerShell 2.0, позволяющих скриптам выводить пользователям 
	сообщения и команды на языке их пользовательского интерфейса.


ПОЛНОЕ ОПИСАНИЕ
	Возможности интернационализации скриптов Windows PowerShell 
	позволяют более качественно обслуживать пользователей из разных 
	стран мира, выводя справочную информацию и сообщения для скриптов 
	и функций на языке пользовательского интерфейса.

	При запуске средства интернационализации скриптов запрашивают 
	значение региональных параметров пользовательского интерфейса 
	операционной системы, импортируют соответствующие переведенные 
	текстовые строки и отображают их пользователю. Раздел Data 
	позволяет хранить текстовые строки отдельно от кода, чтобы их 
	можно было легко найти и извлечь. Новый командлет ConvertFrom-Stri
	ngData преобразует текстовые строки в напоминающие словарь 
	хэш-таблицы для упрощения перевода. 

	Средства Windows PowerShell 2.0, используемые для интернационализа
	ции скриптов, не поддерживаются 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, где хранятся переведенные текстовые 
		строки. Файлы PSD1 хранятся в подкаталогах соответствующих 
		языков в каталоге скрипта.

	 -- Командлет Import-LocalizedData, позволяющий импортировать 
		переведенные текстовые строки для указанного языка в скрипт 
		в среде выполнения. Это командлет распознает и импортирует 
		строки на любом языке, поддерживаемом Windows. 
		Дополнительные сведения см. в разделе Import-LocalizedData.


 РАЗДЕЛ DATA. Сохранение строк по умолчанию
 
	 Раздел Data в скрипте используется для сохранения текстовых 
	 строк на установленном по умолчанию языке.
	 Строки следует располагать парами "ключ-значение" в автономной 
	 строке. Каждая пара "ключ-значение" должна находиться на 
	 отдельной строке. Если используются комментарии, они должны 
	 находиться на отдельных строках.

	 Командлет ConvertFrom-StringData преобразует пары "ключ-значение"
	 в автономной строке в хэш-таблицу, напоминающую словарь, 
	 которая сохраняется внутри значения переменной раздела 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.
		'@
	}


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


 ФАЙЛЫ PSD1: сохранение переведенных строк

	Сообщения скрипта для каждого языка пользовательского интерфейса 
	сохраняются в отдельном текстовом файле с тем же именем, что у 
	скрипта, и с расширением PSD1. Файлы сохраняются в подкаталогах 
	каталога скрипта с именами региональных параметров в следующем 
	формате:

		<язык>-<регион>

	Примеры: ru-RU, ar-SA, zh-Hans


	Например, если скрипт World.ps1 сохранен в каталоге C:\Scripts, 
	нужно создать структуру каталогов с файлами, выглядящую примерно так:

	C:\Scripts
		C:\Scripts\World.ps1
			C:\Scripts\ru-RU\WorldPSD1  
			C:\Scripts\ar-SA\WorldPSD1  
			C:\Scripts\zh-CN\WorldPSD1  
			... 


	Файл World.psd1 в подкаталоге ru-RU каталога скрипта может 
	содержать следующую инструкцию:


		ConvertFrom-StringData @'
			helloWorld = Hello, World (на русском).
			errorMsg1 = You cannot leave the user name field blank (на русском).
			promptMsg = Please enter your user name (на русском).
		'@


	Аналогично, файл World.psd1 в подкаталоге ar-SA каталога скрипта 
	может содержать следующую инструкцию:


		ConvertFrom-StringData @'
			helloWorld = Hello, World (на арабском).
			errorMsg1 = You cannot leave the user name field blank (на арабском).
			promptMsg = Please enter your user name (на арабском).
		'@


 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 для 
	вывода сообщений пользователю, эти сообщения отображаются на 
	арабском языке.

	Например, следующий скрипт выводит сообщение Please enter your 
	user name на арабском языке:

		if (!($username)) { $msgTable.promptMsg }  

	Если командлет Import-LocalizedData не может найти файл PSD1, 
	соответствующий значению переменной $PSUIculture, значение 
	$msgTable не заменяется и при вызове $msgTable.promptMsg 
	выводятся строки на установленном по умолчанию языке (английский 
	(США)).



 ПРИМЕР

	В этом примере показано, как средства интернационализации 
	используются в скрипте для показа пользователям дня недели на 
	языке, установленном на компьютере.
	 
	Ниже приведено полное содержание файла скрипта Sample1.ps1. 

	Скрипт начинается с раздела Data с именем Day ($Day), содержащего 
	команду ConvertFrom-StringData. Выражение, отправленное 
	ConvertFrom-StringData, представляет собой автономную строку, 
	содержащую имена дней на установленном по умолчанию языке 
	(Английский, США) в парах вида "ключ-значение". Командлет 
	ConvertFrom-StringData преобразует пары "ключ-значение" из 
	автономной строки в хэш-таблицу и сохраняет их в значении 
	переменной $Day.

	Команда Import-LocalizedData импортирует содержимое файла PSD1 в 
	каталог, соответствующий значению автоматической переменной 
	$PSUICulture, а затем сохраняет его в переменной $Day, заменяя 
	значения $Day, определенные в разделе Data.

	Остальные команды загружают строки в массив и выводят их. 
   
	 $Day = DATA {
	 # culture="en-US"
	 ConvertFrom-StringData @'
		messageDate = Today is
		d1 = Monday
		d2 = Tuesday
		d3 = Wednesday
		d4 = Thursday
		d5 = Friday
		d6 = Saturday
		d7 = Sunday
	 '@
	 }


		Import-LocalizedData -BindingVariable Day

		# Создание массива дней недели.
		$a = $Day.d1, $Day.d2, $Day.d3, $Day.d4, $Day.d5, $Day.d6, $Day.d7


		# Получение дня недели в виде числа (Monday = 1).
		# Обращение к индексу массива $a для получения названия дня недели.
		# Форматирование строки для построения предложения.

		"{0} {1}" -f $Day.messageDate, $a[(get-date -uformat %u)] | Out-Host



	Файлы PSD1, поддерживающие скрипт, сохраняются в подкаталогах 
	каталога скрипта, имена которых соответствуют значениям 
	переменной $PSUICulture. 

	The following is a complete listing of .\ru-RU\sample1.psd1:

			# culture="ru-RU"
	ConvertFrom-StringData @'
		messageDate = Today is 
		d1 = Monday (на русском языке)
		d2 = Tuesday (на русском языке)
		d3 = Wednesday (на русском языке)
		d4 = Thursday (на русском языке)
		d5 = Friday (на русском языке)
		d6 = Saturday (на русском языке)
		d7 = Sunday (на русском языке)
	'@

	При запуске скрипта Sample.ps1 в системе, где переменная 
	$PSUICulture имеет значение ru-RU, выводится следующее:
	

		Today is Friday (на русском языке)


СМ. ТАКЖЕ
	about_Data_Sections
	about_Automatic_Variables
	about_Hash_Tables
	about_Quoting_Rules
	ConvertFrom-StringData
	Import-LocalizedData