2011-11-29 4 views
0

CultureInfo 개체를 매개 변수로 허용하는 서비스 메서드가 있습니다. 나는 그것을 사용하여 리소스에서 올바른 문자열을 지정한 언어로 얻고 싶습니다. 그래서 같은 서비스를하는 방법이 있습니다WCF 서비스가 잘못된 culture를 가져옵니다.

public string GetTranslatedString(CultureInfo c) 

그리고 클라이언트에서이 같은이 메서드를 호출 :

ServiceReference.GetTranslatedString(CultureInfo.CurrentUICulture); 

나는 또한 시도했다 :

ServiceReference.GetTranslatedString((CultureInfo)CultureInfo.CurrentUICulture.Clone()); 

하지만 잘못된 결과를 만든다! culture 정보 객체는 클라이언트가있는 PC의 문화가 아니라 서비스가있는 PC의 문화를 설명하는 것처럼 전달됩니다. 따라서 클라이언트가 "nl"culture를 갖고 있다면 서버는 여전히 "en"culture를 얻습니다! 왜? 나는 LCID를 객체가 아닌 서비스에 전달함으로써이 문제를 해결하는 방법을 알고 있지만, 실제로 설명 된 접근법이 작동하지 않는 이유를 알고 싶습니다.

+0

당신이 할 디버거를 사용했는지 당신은 당신이 클라이언트에서 전달하는 생각을 전달하는? CultureInfo가 WSDL로 파싱되는 방법을 잘 모르겠습니다. 아마 그 문제가 있나? 일반적으로 상호 운용이 가능한 물건을 전선을 통해 전달하려고 시도하십시오. –

+0

클라이언트가 CultureInfo 객체를 만든 코드를 제공 할 수 있습니까? – Talvalin

+0

@Talvalin CultureInfo.CurrentUICulture는 정적 속성입니다. 어떻게 초기화되는지 모르겠습니다. –

답변

1

이 (단지 4 재미) 시도 :

CultureInfo ci = CultureInfo.CurrentUICulture; 
string text = ServiceReference.GetTranslatedString(ci); 
+0

왜 작동하는지 모르지만 작동합니다! 아무도 그 이유를 설명 할 수 있습니까? 그건 그렇고, CultureInfo.CurrentUICulture.Name과 CultureInfo.CurrentUICulture.LCID를 전달하지 않고 먼저이 변수를 일종의 변수에 할당하지 않아도 작동하지 않으며 내 질문과 같이 잘못된 결과를 생성합니다! –

+0

저에게 이것은 web.config에서''와''를 설정할 때만 작동했습니다! –

관련 문제