[c#] C # / WinForms에서 다국어 애플리케이션을 만드는 모범 사례? [닫은]

이 경우 작은 프로젝트에서 작업해야하기 때문에 C #에서 여러 언어에 적합한 애플리케이션을 만드는 방법을 찾고 있습니다. 기본적으로 두 가지 방법을 찾았습니다.

폼의 Localizable 속성을 true로 설정하고, Language 속성을 설정하고, 모든 레이블을 채우면 ‘완료’됩니다. 내가 본 주요 단점은 양식의 일부가 아닌 다른 항목을 여러 언어 (예 : 팝업 창, 로그 파일 또는 창 등)에 대해 준비하는 방법입니다.

리소스 파일 (예 : ‘Lang.en-us.resx’)을 만들고 모든 언어에 대해 하나씩 (예 : ‘Lang.nl-nl.resx’) 문자열로 채 웁니다. IDE가 자동으로 클래스를 생성하는 것 같으므로 코드에서 Lang.SomeText를 사용할 수 있습니다. 내가 볼 수있는 가장 큰 단점은 모든 양식에 대해 코드에서 모든 레이블과 기타 캡션을 직접 설정해야한다는 것입니다 (데이터 바인딩이 이러한 리소스에서 작동하지 않는 것 같습니다).

그러나 이것을 수행하는 다른 방법도 있다고 확신합니다.

그렇다면 모범 사례는 무엇입니까? 소규모 애플리케이션 (몇 가지 양식, 데이터베이스 연결 등)에 가장 쉬운 것은 무엇이며 대규모 애플리케이션에 가장 적합한 것은 무엇입니까?



답변

저는 항상 다국어 응용 프로그램에 리소스 파일을 사용했습니다.
웹에서 사용 방법을 설명하는 많은 기사가 있습니다.

두 가지 다른 방법을 사용했습니다.

  • 양식당 리소스 파일
  • 전역 리소스 파일

리소스 파일 / 양식은 구현하기가 더 쉽고 리소스 파일에 값만 입력하면되지만 레이블이 응용 프로그램 전체에 분산되어 있기 때문에 유지 관리하기가 더 어렵습니다.

전역 리소스 파일을 사용하면 모든 레이블 (이미지 등)을 하나의 파일 (언어 별)에 중앙 집중화 할 수 있지만 양식로드에서 레이블을 수동으로 설정하는 것을 의미합니다. 이 파일은 오류 메시지 등에 사용할 수도 있습니다.

맛의 문제 …

마지막으로, 영어와 프랑스어로 프로그램을 작성하고 “en-US”와 “fr-FR”이 아닌 “en”과 “fr”을 사용합니다. 일을 복잡하게하지 마십시오. 영어 (미국식, 영어, 호 주식 등)의 다양한 언어는 하나만 사용할 수있을만큼 차이가 거의 없습니다 (프랑스어도 마찬가지입니다).


답변

저는 최근에 독일어와 영어를 모두 지원하는 프로그램을 작성했습니다. 내 영어 리소스를 LanguageResources.resx와 독일어 리소스 LanguageResources.de.resx로 지정하면 자동으로 올바른 언어가 선택된다는 사실에 놀랐습니다. ResXFileCodeGenerator가 모든 것을 처리했습니다.

두 파일의 필드는 동일했으며 아직 입력되지 않은 독일어 필드는 응용 프로그램에 영어로 표시됩니다. 가장 비 특정 파일 언어가 기본 파일이기 때문입니다. 문자열을 찾을 때 가장 구체적인 (예 : .de-DE.resx)에서 가장 덜 구체적인 (예 : .resx)으로 이동합니다.

문자열을 얻으려면 ResourceManager.GetString 또는 ResourceManager.GetObject 호출을 사용하십시오. 애플리케이션은 무료로 ResourceManager를 제공해야합니다.


답변

이 문제를 접할 수있는 다른 사람들을 위해 (마지막 게시물 이후 1 년 이상), 저는 전체 번역 프로세스를 매우 쉽게 만들어주는 전문적인 현지화 제품의 저자입니다. 임의의 솔루션에서 모든 “.resx”문자열을 추출하여 무료 독립 실행 형 응용 프로그램을 사용하여 번역 할 수있는 단일 파일로로드하는 Visual Studio 추가 기능입니다 (번역자는 내 사이트에서 다운로드 할 수 있음). 그런 다음 동일한 추가 기능이 번역 된 문자열을 솔루션으로 다시 가져옵니다. 많은 내장 된 보호 장치, 많은 종소리와 휘파람, 온라인 도움말 (별로 필요하지 않음)을 통해 매우 쉽게 사용할 수 있습니다. 참조 http://www.hexadigm.com를


답변