2011-03-16 2 views
4

다른 언어를 지원하기 위해 여러 리소스 파일이 있습니다. 사용자는 자신이 선호하는 언어로 리소스를 제공받습니다. 중립적 인 언어 (영어)만을 사용하여 기록하려는 응용 프로그램 로그에 추가 로깅이 수행되고 있습니다.다른 언어에 대한 여러 리소스 파일이있는 경우 중립 언어 리소스를 검색하는 방법은 무엇입니까?

영어 전용 메시지 전용 리소스 파일을 원하지 않습니다. 최종 사용자에게 해당 언어로 표시되는 동일한 메시지를 추가로 영어로 응용 프로그램 로그 파일에 기록 할 수 있어야합니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

+0

는 왜 구성 로그를 필요합니까 시도? 그냥 하드 코딩하십시오. – Patrick

+0

로그에 쓰는 방법에 대한 예제를 제공하십시오. – Patrick

+0

메시지를 응용 프로그램에 하드 코딩하지 않기를 바랍니다. 이미 리소스 파일에 리소스 문자열이 정의되어 있으므로이 코드를 하드 코드로 사용하지 않고 코드에 추가로 사용하고 싶습니다. 나는 커스텀 로깅 클래스를 사용한다. 리소스 문자열은 오류 메시지를 나타내며 매개 변수 자리 표시 자 {0}, {1} 등이 있으며 런타임시 최종 오류 메시지를 구성하기 위해 교체됩니다. 나는 특별히 영어로 응용 프로그램 로그에 로그인 할 수 있기를 원합니다. – Elan

답변

4

string res = Resources.ResourceManager.GetString("...", CultureInfo.InvariantCulture); 
+0

이 작업은 가능하지만 리소스 문자열에 액세스하는 방식을 강하게 잃어 버리게됩니다. 자원 이름에 오타가 있으면 오류가 발생하기 쉽습니다. – Elan

+0

리소스 클래스에는 culture 속성이 있습니다. 값을 검색하기 전에이를 불변으로 설정하고 값을 검색 한 후에 되돌릴 수 있습니다. 그것은 일종의 해킹입니다. 다른 방법으로 문자열 리소스 파일에 대한 코드 생성을 직접 할 수 있습니다. – Naraen

+2

@Elan 다행스럽게도 우리는'nameof' 연산자를 사용하므로 코드에 리소스 이름을 더 이상 하드 코딩하지 않아도됩니다. 'Resources.ResourceManager.GetString (nameof (Resources.MyResouceString), ...)' – jirkamat