본문 바로가기

C#의 속삭임

[C#][다국어]리소스 사전을 이용한 다국어 지원

* 다국어 지원을 수동으로 지원 할 필요성이 있을때가 있다. 

* rexs파일로 지원을 하고 있는것 같지만 나의 실력이 부족하여 너무 어렵다.

* 그래서, 나는 리소스 사전을 이용하기로 마음 먹었다. 인터넷을 참고하여 작성해보았다.





* 파일을 추가한다. 다국어 언어를 담고 있을 리소스 사전 파일들이다. 추가>ResourceDictionary 로 해당 파일을 추가하자.

StringResources.en-US.xaml

StringResources.ko-KR.xaml


* 위의 두파일 내용

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

                    xmlns:system="clr-namespace:System;assembly=mscorlib">

    <system:String x:Key="Test">연습</system:String>

</ResourceDictionary>


* 프로그램 시작시 해당 랭귀지 파일중 하나를 선택한다.

protected override void OnStartup(StartupEventArgs e)

        {

            languageChange("ko-KR");

            base.OnStartup(e);

        }

        public static void languageChange(string type) {


            CultureInfo culture = new CultureInfo(type);

            Thread.CurrentThread.CurrentCulture = culture;

            Thread.CurrentThread.CurrentUICulture = culture;

            Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary()

            {

                Source = new Uri(string.Format("StringResources.{0}.xaml",type), UriKind.Relative)

            });

        }


* 이렇게 하고, 언어를 변경 하고 싶을때 언제든지 languageChange를 호출하면 된다.

App.languageChange("en-US");




* 아...C#을 시작한지..얼마 안되었지만 졸라 꼼수만 늘고 있다 (-_ㅡ);