방법: 응용 프로그램 지역화
업데이트: 2007년 11월
이 자습서에서는 LocBaml 도구를 사용하여 지역화된 응용 프로그램을 만드는 방법에 대해 설명합니다.
참고
LocBaml 도구는 프로덕션에 사용하는 응용 프로그램이 아니라 몇 가지 지역화 API를 사용하는 샘플로서 지역화 도구를 작성하는 방법을 보여 줍니다.
이 항목에는 다음 단원이 포함되어 있습니다.
- 개요
- 요구 사항
- 샘플 응용 프로그램 만들기
- 중립 언어 리소스 위성 어셈블리 만들기
- LocBaml 도구 빌드
- LocBaml을 사용하여 파일 구문 분석
- 지역화할 수 있는 콘텐츠 번역
- LocBaml을 사용하여 새 .resources.dll 파일 생성
- LocBaml 사용 관련 팁
- 새로운 기능
- 관련 항목
개요
이 설명에서는 응용 프로그램을 지역화하는 단계별 방법에 대해 설명합니다. 먼저 번역할 텍스트를 추출할 수 있도록 응용 프로그램을 준비합니다. 텍스트를 번역한 후에는 번역한 텍스트를 원래 응용 프로그램의 새 복사본에 병합합니다.
요구 사항
방법을 설명하는 과정 중에 명령줄에서 실행하는 컴파일러인 MSBuild(Microsoft Build Engine)를 사용하게 됩니다.
또한 프로젝트를 파일도 사용하게 됩니다. MSBuild 및 프로젝트 사용 방법에 대한 자세한 내용은 Windows Presentation Foundation 응용 프로그램 빌드 및 배포를 참조하십시오.
설명 중 제시되는 모든 예제에서는 문화권으로 미국 영어(en-US)를 사용하므로, 다른 언어를 설치할 필요 없이 예제의 단계를 수행할 수 있습니다.
샘플 응용 프로그램 만들기
이 단계에서는 지역화할 응용 프로그램을 준비합니다. WPF(Windows Presentation Foundation) 샘플에는 설명 과정에서 코드 예제로 사용할 HelloApp 샘플이 있습니다. 이 샘플을 사용하려면 LocBaml 도구 샘플에서 XAML(Extensible Application Markup Language) 파일을 다운로드하십시오.
지역화를 시작하려는 지점까지 응용 프로그램을 개발합니다.
MSBuild에서 주 어셈블리와 중립 언어 리소스가 들어 있는 위성 어셈블리(확장명이 .resources.dll인 파일)를 생성하도록 프로젝트 파일에서 개발 언어를 지정합니다. HelloApp 샘플에 있는 프로젝트 파일은 HelloApp.csproj입니다. 이 파일에서 개발 언어는 다음과 같이 식별됩니다.
<UICulture>en-US</UICulture>
XAML 파일에 Uid를 추가합니다. Uid는 파일의 변경 내용을 추적하고 번역해야 할 항목을 식별하는 데 사용됩니다. 파일에 Uid를 추가하려면 프로젝트 파일에서 updateuid를 실행합니다.
msbuild /t:updateuid helloapp.csproj
빠지거나 중복된 Uid가 있는지 확인하려면 checkuid를 실행합니다.
msbuild /t:checkuid helloapp.csproj
updateuid를 실행한 후에는 파일에 Uid가 있어야 합니다. 예를 들어 HelloApp의 Pane1.xaml 파일에서 다음을 찾을 수 있어야 합니다.
<StackPanel x:Uid="StackPanel_1">
<TextBlock x:Uid="TextBlock_1">Hello World</TextBlock>
<TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock>
</StackPanel>
중립 언어 리소스 위성 어셈블리 만들기
중립 언어 리소스 위성 어셈블리를 생성하도록 응용 프로그램을 구성했으면 응용 프로그램을 빌드합니다. 그러면 주 응용 프로그램 어셈블리와 함께 LocBaml에서 지역화할 때 필요한 중립 언어 리소스 위성 어셈블리가 생성됩니다. 응용 프로그램을 빌드하려면
HelloApp를 컴파일하여 DLL(동적 연결 라이브러리)을 만듭니다.
msbuild helloapp.csproj
새로 생성된 주 응용 프로그램 어셈블리인 HelloApp.exe가 다음 폴더에 만들어집니다.
C:\HelloApp\Bin\Debug\
새로 생성된 중립 언어 리소스 위성 어셈블리인 HelloApp.resources.dll이 다음 폴더에 만들어집니다.
C:\HelloApp\Bin\Debug\en-US\
LocBaml 도구 빌드
LocBaml을 빌드하는 데 필요한 모든 파일은 WPF 샘플에 들어 있습니다. LocBaml 도구 샘플 샘플에서 C# 파일을 다운로드합니다.
명령줄에서 프로젝트 파일(locbaml.csproj)을 실행하여 도구를 빌드합니다.
msbuild locbaml.csproj
Bin\Release 디렉터리로 이동하여 새로 생성된 실행 파일(locbaml.exe)을 찾습니다. 예를 들어 C:\LocBaml\Bin\Release\locbaml.exe 파일을 찾습니다.
LocBaml을 실행할 때 지정할 수 있는 옵션은 다음과 같습니다.
parse 또는 -p: Baml, 리소스 또는 DLL 파일을 구문 분석하여 .csv 또는 .txt 파일을 생성합니다.
generate 또는 -g: 번역된 파일을 사용하여 지역화된 이진 파일을 생성합니다.
out 또는 -o [filedirectory]: 출력 파일 이름입니다.
culture 또는 -cul [culture]: 출력 어셈블리의 로캘입니다.
translation 또는 -trans [translation.csv]: 번역되거나 지역화된 파일입니다.
asmpath 또는 -asmpath: [filedirectory]**:**XAML 코드에 사용자 지정 컨트롤이 있는 경우 사용자 지정 컨트롤 어셈블리에 asmpath를 제공해야 합니다.
nologo: 로고 또는 저작권 정보를 표시하지 않습니다.
verbose: 정보를 세부 정보 표시 모드로 나타냅니다.
참고
도구를 실행할 때 옵션 목록을 보려면 LocBaml.exe를 입력하고 Enter 키를 누르십시오.
LocBaml을 사용하여 파일 구문 분석
LocBaml 도구를 만들었으므로 이제 HelloApp.resources.dll을 구문 분석하여 지역화할 텍스트 콘텐츠를 추출할 준비가 되었습니다.
LocBaml.exe를 응용 프로그램의 bin\debug 폴더에 복사합니다. 이 폴더에 앞서 생성한 주 응용 프로그램 어셈블리가 있습니다.
위성 어셈블리 파일을 구문 분석하여 결과를 .csv 파일로 저장하려면 다음 명령을 사용합니다.
LocBaml.exe /parse en-US/HelloApp.resources.dll /out:Hello.csv
참고
입력 파일인 HelloApp.resources.dll이 LocBaml.exe와 같은 디렉터리에 있지 않은 경우 한 파일을 이동하여 두 파일이 모두 동일한 디렉터리에 있게 만드십시오.
LocBaml을 실행하여 파일을 구문 분석하면 쉼표(.csv 파일)나 탭(.txt 파일)으로 구분된 7개의 필드가 있는 출력이 만들어집니다. 다음은 HelloApp.resources.dll의 구문 분석된 .csv 파일입니다.
HelloApp.g.en-US.resources:window1.baml,Stack1:System.Windows.Controls.StackPanel.$Content,Ignore,FALSE, FALSE,,#Text1;#Text2;
HelloApp.g.en-US.resources:window1.baml,Text1:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Hello World
HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Goodbye World
7개의 필드는 다음과 같습니다.
BAML Name. 소스 언어 위성 어셈블리와 관련된 BAML 리소스의 이름입니다.
Resource Key. 지역화된 리소스 식별자입니다.
범주. 값 형식입니다. 지역화 특성 및 주석을 참조하십시오.
가독성. 지역화 담당자가 값을 읽을 수 있는지 여부를 나타냅니다. 지역화 특성 및 주석을 참조하십시오.
수정 가능성. 지역화 담당자가 값을 수정할 수 있는지 여부를 나타냅니다. 지역화 특성 및 주석을 참조하십시오.
주석. 값이 지역화되는 방법을 판단하는 데 도움이 되는 추가적인 값 설명입니다. 지역화 특성 및 주석을 참조하십시오.
값. 원하는 문화권으로 번역할 텍스트 값입니다.
다음 표에서는 이러한 필드를 .csv 파일의 구분된 값에 매핑하는 방법을 보여 줍니다.
BAML 이름
리소스 키
범주
가독성
수정 가능성
주석
값
HelloApp.g.en-US.resources:window1.baml
Stack1:System.Windows.Controls.StackPanel.$Content
무시
FALSE
FALSE
#Text1;#Text2
HelloApp.g.en-US.resources:window1.baml
Text1:System.Windows.Controls.TextBlock.$Content
없음
TRUE
TRUE
Hello World
HelloApp.g.en-US.resources:window1.baml
Text2:System.Windows.Controls.TextBlock.$Content
없음
TRUE
TRUE
Goodbye World
주석 필드의 모든 값에는 포함된 값이 없습니다. 다시 말해 필드에 값이 없으면 필드가 비어 있게 됩니다. 또한 첫 번째 행의 항목은 읽을 수도, 수정할 수도 없으며 범주 값이 "Ignore"입니다. 이것은 모두 값을 지역화할 수 없다는 것을 나타냅니다.
특히 크기가 큰 구문 분석된 파일에서 지역화할 수 있는 항목을 빠르게 찾으려면 범주, 가독성 및 수정 가능성를 기준으로 항목을 정렬하거나 필터링합니다. 예를 들어 읽을 수 없거나 수정할 수 없는 값을 필터링할 수 있습니다.
지역화할 수 있는 콘텐츠 번역
사용할 수 있는 도구가 있으며 이 도구로 추출된 콘텐츠를 번역합니다. 이 작업을 수행하는 좋은 방법은 리소스를 .csv 파일로 만들고 Microsoft Excel에서 연 다음 마지막 열(값)을 번역하여 변경하는 것입니다.
LocBaml을 사용하여 새 .resources.dll 파일 생성
HelloApp.resources.dll을 LocBaml으로 구문 분석하여 식별된 콘텐츠를 번역한 후에는 원래 응용 프로그램에 다시 병합해야 합니다. generate 또는 -g 옵션을 사용하여 새 .resources.dll 파일을 생성합니다.
다음 구문을 사용하여 새 HelloApp.resources.dll 파일을 생성합니다. 문화권을 en-US로 표시합니다(/cul:en-US).
LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-US
참고
입력 파일인 Hello.csv가 실행 파일인 LocBaml.exe와 같은 디렉터리에 있지 않은 경우 한 파일을 이동하여 두 파일이 모두 동일한 디렉터리에 있게 만드십시오.
C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll 디렉터리에 있는 이전 HelloApp.resources.dll 파일을 새로 생성한 HelloApp.resources.dll 파일로 대체합니다.
이제 "Hello World" 및 "Goodbye World"가 응용 프로그램에서 번역되어야 합니다.
다른 문화권으로 번역하려면 번역할 언어의 문화권을 사용하십시오. 다음 예제에서는 프랑스어(캐나다)로 번역하는 방법을 보여 줍니다.
LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CA
주 응용 프로그램 어셈블리와 동일한 어셈블리에서 새 위성 어셈블리를 저장할 문화권별 폴더를 만듭니다. 프랑스어(캐나다)의 경우 폴더는 fr-CA입니다.
생성된 위성 어셈블리를 새 폴더로 복사합니다.
새 위성 어셈블리를 테스트하려면 응용 프로그램이 실행될 문화권을 변경해야 합니다. 이 작업은 다음 두 가지 방법 중 하나로 수행할 수 있습니다.
시작 | 제어판 | 국가 및 언어 옵션에서 운영 체제의 국가별 설정을 변경합니다.
응용 프로그램에서 App.xaml.cs에 다음 코드를 추가합니다.
<Application xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" x:Class="SDKSample.App" x:Uid="Application_1" StartupUri="Window1.xaml"> </Application>
LocBaml 사용 관련 팁
사용자 지정 컨트롤을 정의하는 모든 종속 어셈블리는 LocBaml의 로컬 디렉터리에 복사하거나 GAC에 설치해야 합니다. 이것은 지역화 API에서 BAML(이진 XAML)을 읽을 때 종속 어셈블리에 액세스할 수 있어야 하기 때문입니다.
주 어셈블리가 서명된 경우 생성된 리소스 DLL도 서명되어야 로드할 수 있습니다.
지역화된 리소스 DLL의 버전은 주 어셈블리와 동기화되어야 합니다.
새로운 기능
이제 LocBaml 도구를 사용하는 기본적인 방법에 대해 이해했을 것입니다. Uid를 포함하는 파일을 만들 수 있어야 합니다. LocBaml 도구로 파일을 구문 분석하여 지역화할 수 있는 콘텐츠를 추출하고 콘텐츠를 번역한 후 번역된 콘텐츠를 병합하는 .resources.dll 파일을 생성할 수 있어야 합니다. 이 항목에서 모든 내용을 상세히 다루는 것은 아니지만 이제 LocBaml을 사용하여 응용 프로그램을 지역화하는 데 필요한 지식을 갖추게 되었습니다.