2009-06-25 6 views
1

이 오늘 내 초기 게시물에 관련이있다 : link text배포 지역화 윈폼 응용 프로그램

그래서 지금은 두 개의 서로 다른 언어 버전, 영어 하나, 스페인어 하나 데모 윈폼 응용 프로그램을 가지고있다. 이제 내가 큰 응용 프로그램을 가지고 있다고 가정 해 봅시다. 15 개 언어로 된 언어를 지원한다고 가정 해 봅시다. 이전 게시물에서는 현지화를 설정하기 위해 양식을 초기화 할 때 몇 줄을 추가하는 것이 좋습니다. 현재 저는 한 번 클릭하여 응용 프로그램을 배포하고 있습니다. 나는 앱의 15 가지 맛을 가지지 않고 배포 할 방법을 찾고있다. 현재 사용자의 로컬 리 제이션을 볼 수있는 방법이 있습니까? 만약 내가 사용하고있는 언어 중 하나와 일치한다면, 사용하기 위해 화면을 작성했습니다. 그렇지 않으면 기본값을 사용 하시겠습니까?

답변

2

.NET 프레임 워크의 기본 제공 현지화 시스템은 이미이 대체 상황을 처리합니다. 양식과 컨트롤을 현지화하는 위성 DLL을 설치하기 만하면 올바른 로캘이 사용자의 로캘과 일치하면 .NET에서 사용하고 그렇지 않으면 다음 관련 부모 로캘로 폴백합니다. 예를 들어, 응용 프로그램의 기본 언어는 욕실이-US하지만 당신은 EN-GB 번역을 제공 한하고 번역 도중, 다음 대체 인 경우 :

EN-GB-> 엔 -> EN-US

즉 en-GB를 사용할 수없는 경우 en을 검색하고없는 경우 기본값 인 en-US를 사용합니다.

따라서 배포 할 때 주 en-US 응용 프로그램 만 배포하고 언어 팩과 같이 특정 언어에 대한 추가 위성 DLL을 제공 할 수 있습니다. 기본 응용 프로그램 어셈블리가 원하는 위성 버전을 나타내는 데 사용할 수있는 속성 인 SatelliteContractVersionAttribute이 있습니다.이 기능을 사용하면 어셈블리 버전에서 빌드가 증가 할 경우 (예 : 빌드 번호가 빌드 번호를 무시할 수있는 경우)).

MSDN에는 세계화 및 현지화에 대한 많은 정보와이 기능이 ClickOnce 배포 환경에서도 작동합니다. Globalizing Windows Forms section을 확인하십시오.

물론 세계화 된 제품을 지원하기 위해 .NET 시스템에 의존하지 않기로 결정한 경우 선택한 방향에 맞는 것을 선택해야합니다.

+0

Jeff, 내 응용 프로그램이 현재 로케일을 가져 오려면 다음을 추가해야했습니다. 이게 괜찮아 보이니? 일단 내 표준 및 형식을 전환하면이 응용 프로그램이 올바르게로드됩니다. 나는 당신의 게시물에서 모두 설정 한 것 같습니다. 문자열 cultureName = System.Globalization.CultureInfo.CurrentCulture.Name; System.Globalization.CultureInfo myCI = new System.Globalization.CultureInfo (cultureName, false); System.Threading.Thread.CurrentThread.CurrentUICulture = myCI; System.Threading.Thread.CurrentThread.CurrentCulture = myCI; –

+0

CurrentUICulture를 변경할 때주의하십시오. 이것은 리소스와 관련이 없으며 사용자가 숫자 서식 지정 등을 위해 설정 한 사용자 지정 설정을 손상시킬 수 있으므로 일반적으로 혼자 남겨 두어야합니다. –