항목
    about_Script_Internationalization

간단한 설명
    스크립트에서 메시지와 지침을 사용자의 UI(사용자 인터페이스) 언어로 사용자에게 쉽게 표시할 수 있도록 하는 
    Windows PowerShell 2.0의 스크립트 국제화 기능에 대해 설명합니다.


자세한 설명
    Windows PowerShell 스크립트 국제화 기능을 통해 스크립트와 함수의 도움말 및 사용자 메시지를 사용자의 UI 
    언어로 표시하여 전 세계의 사용자에게 더 나은 서비스를 제공할 수 있습니다.
    
    스크립트 국제화 기능은 실행 중에 운영 체제의 UI culture를 쿼리하고, 적절한 번역된 텍스트 문자열을 가져오고, 
    사용자에게 해당 문자열을 표시합니다. 텍스트 문자열을 쉽게 식별하고 추출할 수 있도록 Data 섹션에 코드와 
    별도로 텍스트 문자열을 저장할 수 있습니다. 새로운 ConvertFrom-StringData cmdlet은 텍스트 문자열을 
    사전과 유사한 해시 테이블로 변환하여 번역을 용이하게 합니다. 

    스크립트 국제화에서 사용되는 Windows PowerShell 2.0 기능은 Windows PowerShell 1.0에서 지원되지 않습니다. 
    이러한 기능이 포함된 스크립트는 수정 없이 Windows PowerShell 1.0에서 실행되지 않습니다.  

    국가별 도움말 텍스트를 지원하기 위해 Windows PowerShell 2.0에는 다음 기능이 포함되어 있습니다.

       -- 텍스트 문자열을 코드 명령과 분리하는 Data 섹션. Data 섹션에 대한 자세한 내용은 
          about_Data_Sections를 참조하십시오.

       -- 새로운 자동 변수, $PSCulture 및 $PSUICulture. $PSCulture에는 시스템에서 날짜, 시간 통화 
          등의 요소에 사용되는 UI 언어의 이름이 저장됩니다. $PSUICulture 변수에는 시스템에서 메뉴, 
          텍스트 문자열 등의 사용자 인터페이스 요소에 사용되는 UI 언어의 이름이 저장됩니다.

       -- 텍스트 문자열을 사전과 유사한 해시 테이블로 변환하여 번역을 용이하게 하는 ConvertFrom-StringData 
          cmdlet. 자세한 내용은 ConvertFrom-StringData를 참조하십시오.

       -- 번역된 텍스트 문자열을 저장하는 새로운 파일 형식 .psd1. .psd1 파일은 스크립트 디렉터리의 언어별 하위 
          디렉터리에 저장됩니다.
    
       -- 지정된 언어의 번역된 텍스트 문자열을 런타임에 스크립트로 가져오는 Import-LocalizedData cmdlet. 
          이 cmdlet은 모든 Windows 지원 언어로 된 문자열을 인식하고 가져옵니다. 자세한 내용은 Import-LocalizedData를 
          참조하십시오.


 Data 섹션: 기본 문자열 저장
 
     스크립트의 Data 섹션을 사용하여 텍스트 문자열을 기본 언어로 저장합니다. here-string에서 키/값 쌍으로 문자열을 
     정렬합니다. 각 키/값 쌍은 별도의 줄에 있어야 합니다. 설명을 포함하는 경우 설명도 별도의 줄에 있어야 합니다.

     ConvertFrom-StringData cmdlet은 here-string의 키/값 쌍을 Data 섹션 변수의 값에 저장되는 사전과 유사한 해시 
     테이블로 변환합니다.

     다음 예제에서 World.ps1 스크립트의 Data 섹션에는 스크립트에 대한 프롬프트 메시지의 영어-미국(en-US) 집합이 
     포함되어 있습니다. ConvertFrom-StringData cmdlet은 문자열을 해시 테이블로 변환하고 $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-string에 대한 자세한 내용은 about_Quoting_Rules를 참조하십시오.


 psd1 파일: 번역된 문자열 저장

    스크립트와 이름이 같고 파일 이름 확장명이 .psd1인 별도의 텍스트 파일에 각 UI 언어에 대한 스크립트 메시지를 
    저장합니다. 다음 형식으로 culture의 이름이 포함된 스크립트 디렉터리의 하위 디렉터리에 이러한 파일을 
    저장합니다.

	<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	
	    ...	


    스크립트 디렉터리의 de-DE 하위 디렉터리에 있는 World.psd1 파일은 다음 문을 포함할 수 있습니다.


    	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).
	'@


    마찬가지로 스크립트 디렉터리의 ar-SA 하위 디렉터리에 있는 World.psd1 파일은 다음 문을 포함할 수 있습니다.


    	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: 번역된 문자열의 동적 검색

    현재 사용자의 UI 언어로 된 문자열을 검색하려면 Import-LocalizedData cmdlet을 사용합니다. 

    Import-LocalizedData는 $PSUICulture 자동 변수의 값을 찾고 $PSUICulture 값과 
    일치하는 하위 디렉터리에 있는 <script-name>.psd1 파일의 내용을 가져옵니다. 그런 다음 
    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 스크립트의 Data 
    섹션에 정의될 수 있는 모든 기본 문자열을 대체합니다.

    이에 따라 스크립트에서 $msgTable 변수를 사용하여 사용자 메시지를 표시하는 경우 메시지가 아랍어로 
    표시됩니다.

    예를 들어 다음 스크립트에서는 "Please enter your user name"이라는 메시지를 아랍어로 표시합니다.

	if (!($username)) { $msgTable.promptMsg }  
    
    Import-LocalizedData를 통해 $PSUIculture의 값과 일치하는 .psd1 파일을 찾을 수 없는 경우 
    $msgTable의 값이 대체되지 않으며 $msgTable.promptMsg를 호출하면 대체 en-US 문자열이 표시됩니다.



 예제

    이 예제에서는 스크립트 국제화 기능을 스크립트에서 사용하여 컴퓨터에서 설정된 언어로 사용자에게 요일을 
    표시하는 방법을 보여 줍니다.
     
    Sample1.ps1 스크립트 파일의 전체 목록은 다음과 같습니다. 

    스크립트는 ConvertFrom-StringData 명령이 포함된 Day($Day)라는 Data 섹션으로 시작됩니다. 
    ConvertFrom-StringData에 전송된 식은 기본 UI culture인 en-US로 된 요일 이름을 키/값 쌍으로 
    포함하는 here-string입니다. ConvertFrom-StringData cmdlet은 here-string의 키/값 쌍을 해시 
    테이블로 변환한 다음 $Day 변수의 값에 저장합니다.

    Import-LocalizedData 명령은 $PSUICulture 자동 변수의 값과 일치하는 디렉터리에 있는 .psd1 
    파일의 내용을 가져온 다음 $Day 변수에 저장하여 Data 섹션에 정의된 $Day의 값을 대체합니다.

    나머지 명령은 문자열을 배열로 로드하여 표시합니다. 
   
        $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 값과 일치하는 이름으로 스크립트 디렉터리의 
    하위 디렉터리에 저장됩니다. 

    .\ko-KR\sample1.psd1의 전체 목록은 다음과 같습니다.

        # culture="ko-KR"
	ConvertFrom-StringData @'
	    messageDate = Today is 
	    d1 = Monday (한국어)
	    d2 = Tuesday (한국어)
	    d3 = Wednesday (한국어)
	    d4 = Thursday (한국어)
	    d5 = Friday (한국어)
	    d6 = Saturday (한국어)
	    d7 = Sunday (한국어)
	'@

    이에 따라 $PSUICulture의 값이 ko-KR인 시스템에서 Sample.ps1을 실행하는 경우 스크립트의 
    출력은 다음과 같습니다.
	

	Today is Friday (한국어)


참고 항목
    about_Data_Sections
    about_Automatic_Variables
    about_Hash_Tables
    about_Quoting_Rules
    ConvertFrom-StringData
    Import-LocalizedData   




목차