about_Script_Internationalization
간단한 설명
스크립트가 UI(사용자 인터페이스) 언어로 사용자에게 메시지와 지침을 쉽게 표시할 수 있도록 하는 스크립트 국제화 기능에 대해 설명합니다.
자세한 설명
PowerShell 스크립트 국제화 기능을 사용하면 사용자의 언어로 도움말 및 사용자 메시지를 표시하여 전 세계 사용자에게 더 나은 서비스를 제공할 수 있습니다.
스크립트 국제화 기능은 실행 중에 운영 체제의 UI 문화권을 쿼리하고, 번역된 적절한 텍스트 문자열을 가져오고, 사용자에게 표시합니다. 데이터 섹션을 사용하면 텍스트 문자열을 코드와 분리하여 쉽게 식별하고 추출할 수 있습니다. 새 cmdlet ConvertFrom-StringData
은 번역을 용이하게 하기 위해 텍스트 문자열을 사전과 유사한 해시 테이블로 변환합니다.
PowerShell은 국제 도움말 텍스트를 지원하기 위해 다음 기능을 포함합니다.
텍스트 문자열을 코드 명령과 구분하는 데이터 섹션입니다. 데이터 섹션에 대한 자세한 내용은 about_Data_Sections 참조하세요.
새 자동 변수 및
$PSUICulture
.$PSCulture
$PSCulture
는 날짜, 시간 및 통화와 같은 요소에 대해 시스템에서 사용되는 UI 언어의 이름을 저장합니다. 변수는$PSUICulture
메뉴 및 텍스트 문자열과 같은 사용자 인터페이스 요소에 대해 시스템에서 사용되는 UI 언어의 이름을 저장합니다.번역을 용이하게 하기 위해 텍스트 문자열을 사전과 유사한 해시 테이블로 변환하는 cmdlet
ConvertFrom-StringData
입니다. 자세한 내용은 ConvertFrom-StringData를 참조하세요.번역된 텍스트 문자열을 저장하는 새 파일 형식
.psd1
입니다. 파일은.psd1
스크립트 디렉터리의 언어별 하위 디렉터리에 저장됩니다.지정된 언어의 번역된 텍스트 문자열을 런타임에 스크립트로 가져오는 cmdlet
Import-LocalizedData
입니다. 이 cmdlet은 Windows 지원 언어로 문자열을 인식하고 가져옵니다. 자세한 내용은 Import-LocalizedData를 참조 하세요.
데이터 섹션: 기본 문자열 저장
스크립트의 데이터 섹션을 사용하여 텍스트 문자열을 기본 언어로 저장합니다. 여기에 있는 문자열의 키/값 쌍으로 문자열을 정렬합니다. 각 키/값 쌍은 별도의 줄에 있어야 합니다. 메모를 포함하는 경우 주석은 별도의 줄에 있어야 합니다.
cmdlet은 ConvertFrom-StringData
여기 문자열의 키/값 쌍을 데이터 섹션 변수의 값에 저장된 사전과 유사한 해시 테이블로 변환합니다.
다음 예제에서 스크립트의 World.ps1
데이터 섹션에는 스크립트에 대한 프롬프트 메시지의 영어 미국(en-US) 집합이 포함되어 있습니다. cmdlet은 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 파일: 번역된 문자열 저장
각 UI 언어에 대한 스크립트 메시지를 스크립트 및 .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
...
스크립트 디렉터리의 de-DE 하위 디렉터리에 있는 파일에는 World.psd1
다음 문이 포함될 수 있습니다.
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: 번역된 문자열의 동적 검색
현재 사용자의 UI 언어로 문자열을 검색하려면 cmdlet을 Import-LocalizedData
사용합니다.
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
바꿉니다.
따라서 스크립트가 변수를 $msgTable
사용하여 사용자 메시지를 표시하면 메시지가 아랍어로 표시됩니다.
예를 들어 다음 스크립트는 아랍어로 "사용자 이름을 입력하세요" 메시지를 표시합니다.
if (!($username)) { $msgTable.promptMsg }
값$PSUIculture
과 일치하는 파일을 찾을 .psd1
수 없는 경우 Import-LocalizedData
값 $msgTable
이 대체되지 않고 대체(fallback) en-US 문자열을 표시하는 호출 $msgTable.promptMsg
이 표시됩니다.
예제
이 예제에서는 스크립트 국제화 기능을 스크립트에서 사용하여 컴퓨터에서 설정된 언어로 사용자에게 요일을 표시하는 방법을 보여줍니다.
다음은 Sample1.ps1 스크립트 파일의 전체 목록입니다.
스크립트는 명령이 포함된 Day($Day)라는 데이터 섹션으로 ConvertFrom-StringData
시작합니다. 제출된 ConvertFrom-StringData
식은 키/값 쌍의 기본 UI 문화권 en-US에 있는 일 이름을 포함하는 here-string입니다. cmdlet은 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
'@
따라서 값 $PSUICulture
이 de-DE인 시스템에서 Sample.ps1을 실행하면 스크립트의 출력은 다음과 같습니다.
Heute ist Freitag
참고 항목
PowerShell