РАЗДЕЛ
    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       




Содержание