WPF 에서 다국어 지원하는 방법이 여러가지 있습니다.
MS 에서는 LocBaml 툴을 사용해서 다국어 지원을 권장(?) 하고 있습니다.
http://msdn.microsoft.com/ko-kr/library/ms746621(v=vs.90).aspx
근데 이것은 프로그램이 개발이 완료 되고 나서 했을 때 가장 빠르고 편하며 아래와 같이 엑셀파일도 만들어 주어서 입력하기도 편합니다.
배포를 하면 아래와 같이 개개의 언어별로 생성이 됩니다.
참고로 아래와 같이 msbuild 를 이용해서 컨트롤의 UID를 만드는데
*msbuild /t:updateuid helloapp.csproj
프로젝트 위치에 ex)d:\Visual Studio2010\wpfAppliction1 <--- 공백등이 있으면 오류가 발생합니다.
공백없이 잘 실행된 예
컨텐츠내용이 변경되면 다시 파일을 만들어야함!!!
암튼 저는 개발 중이라 반수동(?)으로 다국어 지원을 아래와 같이 하기로 맘먹음 ㅋ
다국어 지원하기
프로젝트 구성
다국어 파일만들기
영어
한국어
App.xaml 에서 만들어진 다국어 리소스를 등록합니다.
디자인모드에서 다국어 리소스 반영하기
( 다국어 내용이 많아지면 안습 이겠따 ㅡ_ㅡ )
소스코드
아래코드는 특별한것은 없습니다.
string requestedCulture = string.Format("StringResources.{0}.xaml", culture); 리소스 파일을 찾아서
그 리소스를 기본으로 사용합니다.
/// <summary> /// MainWindow.xaml에 대한 상호 작용 논리 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); //SelectCulture("ko-KR"); } private void Button_Click(object sender, RoutedEventArgs e) { SelectCulture("ko-KR"); ViewCultInfo(); } private void Button_Click_1(object sender, RoutedEventArgs e) { SelectCulture("en-US"); ViewCultInfo(); } private void ViewCultInfo() { this.textBlock4.Text = CultureInfo.CurrentCulture.DisplayName; this.textBlock1.Text = FindResource("HelloText").ToString(); } public static void SelectCulture(string culture) { // List all our resources List<ResourceDictionary> dictionaryList = new List<ResourceDictionary>(); foreach (ResourceDictionary dictionary in Application.Current.Resources.MergedDictionaries) { dictionaryList.Add(dictionary); } // We want our specific culture string requestedCulture = string.Format("StringResources.{0}.xaml", culture); ResourceDictionary resourceDictionary = dictionaryList.FirstOrDefault(d => d.Source.OriginalString == requestedCulture); if (resourceDictionary == null) { //리소스를 찾을수 없다면 기본 리소스로 지정 requestedCulture = "StringResources.ko-KR.xaml"; resourceDictionary = dictionaryList.FirstOrDefault(d => d.Source.OriginalString == requestedCulture); } if (resourceDictionary != null) { Application.Current.Resources.MergedDictionaries.Remove(resourceDictionary); Application.Current.Resources.MergedDictionaries.Add(resourceDictionary); } //지역화 설정 Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture); Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture); } }
실행된 모습
'WPF' 카테고리의 다른 글
[popup / alert ] 프로그램 좌측하단 작업표시줄 위에 실행하기 (0) | 2011.08.05 |
---|---|
WPF BasedOn 전역스타일 (0) | 2011.07.28 |
[DataTemplate / UserControl] 데이터 템플릿안에 유저컨트롤 값 바인딩하기 (0) | 2011.04.14 |
[Binding] 바인딩으로 금액표시 / 콤마표시 만들기 (0) | 2011.03.22 |
[ MultiBinding / IMultiValueConverter ] ConverterParameter 값넘기기 (0) | 2011.03.15 |
[ WPF / GetProperty ] AutoComplate 구현 (0) | 2011.01.13 |
[GetKeyStates / Ctrl+S] 컨트롤+S 동시누름키값 받아오기 (0) | 2011.01.04 |
[WPF AutoComplateBox / ToolKit] 초간단 자동완성 구현하기 (0) | 2010.12.23 |
[WPF ToolKit] WPF 툴킷 /Extended 툴킷 다운로드 (0) | 2010.12.23 |
[WPF Key.Enter]엔터키 이동 (0) | 2010.12.22 |