2009-04-04 1 views
6

미국에서는 "." 구분 기호로 사용하지만 독일에서는 ","을 사용합니다. 내 논리가 어느 쪽인가를 처리하기에 충분히 똑똑한 지 테스트하려고하는데 Windows 2000 컴퓨터를 독일어 모드로 설정하지 못하는 것 같습니다.내 ASP.NET/SQL Server 응용 프로그램이 독일에 대해 십진수를 올바르게 처리하는지 (미국인) 테스트 할 수 있습니까?

나는 제어판의 국가 별 옵션에 가서 "지역"을 "독일"로 변경했습니다. 그런 다음 IIS와 SQL Server를 모두 다시 시작했습니다. 하지만 내 변화는 효과가없는 것처럼 보입니다.

이 줄은 여전히 ​​"." 분리기가됩니다.

선택 System.Globalization.CultureInfo 부 (CI) = 새로운 선택 System.Globalization.CultureInfo ( System.Threading.Thread.CurrentThread.CurrentCulture.Name);

Response.Write (ci.NumberFormat.NumberDecimalSeparator);

내가 뭘 잘못하고 있니?

+0

에 대한 기사

쉽게

코드를 테스트입니다 * 이것에 대한 답 ... 그래서 꿰매 좋은 질문! ;-) – Cerebrus

+0

한때 나는 Windows 2000에서 일본어 로켈을 사용해야했습니다. 그것은 악몽이었습니다. 나는 너의 고통을 느낀다. –

답변

6

을 테스트하는 가장 좋은 방법은 예를 들어, 당신의 Web.config에 세계화 요소를 추가하는 것입니다 : 당신은 또한 경우 uiCulture을 변경할 수 있습니다 : 해제 DE 날짜 및 숫자 형식에 영향을 미칠하는 문화를 변경

<system.web> 
    <globalization culture="de-DE" uiCulture="en-US" /> 
</system.web> 

uiCulture를 en-US로 남겨두면 영어 이외의 예외 메시지가 표시됩니다.

+0

그것은 효과가 있었다. 감사. –

0

여러분이 생각하는 것은 포맷 탭 (거기에있는 첫 번째 탭)입니다.

+0

"숫자"탭이 있으며 "소수점 기호"를 ","로 표시하고 있습니다. 그래서 제어판이 제대로 보이지만 ASP.NET은 여전히 ​​그것이 미국이라고 생각합니다. 내가 바꿀 필요가있는 다른 곳이 있습니까? –

0

현재 문화권을 독일어로 설정할 수 있습니다.

나는 (고급 탭 당신이 당신의 국가 별 설정으로 설정하면, 당신은 "현재 사용자 계정 및 기본 사용자 프로필에 모든 설정을 적용"해야합니다 않았다

3

는 국가 별 설정을 전환하는 것보다 쉬울 것이라고 생각)?

대부분의 경우 그렇게해야합니다. 나는 또한 당신의 문화가 Web.configglobalization 요소의 "en-us"로 미리 설정되지 않았다고 가정합니다.

문화권 설정을 코드에 수동으로 설정하지 않고 시스템 설정에서 상속 받기를 원하는 것처럼 보입니다. IMO는 변경 사항을 SQL 서버에 전파해야하기 때문에 검사하는 좋은 방법입니다.

+0

내 W2K 시스템에는 그런 건 없습니다. –

+0

죄송합니다. 나는 W2K에 관한 부분을 놓쳤다. 내 것은 XP SP2입니다. 그러나 Win 2K에서도 모든 설정을 적용 할 수있는 방법이 있어야합니다. Lemme가 그것을 찾는다. – Cerebrus

+0

+1. W2K에서 기본 프로필의 국가 별 설정을 변경하려면 수동으로 레지스트리를 편집해야한다고 생각합니다. HKEY_USERS/.DEFAULT/Control Panel/International을 살펴보십시오. 그러나 web.config에 세계화 요소를 추가하는 것이 더 쉽습니다. – Joe

0

정말이 하나를 치고 싶다면 가상 머신은 친구입니다. 그러나 독일어 버전의 OS를 구하려면 실제로 msdn 가입이 필요합니다.

가상 머신에 os (WinXP 또는 Vista)를로드 한 다음 웹 사이트를 탐색하십시오.

0

IIS가 영역 설정을 사용한다고 생각하지 않습니다. 코드에서 CultureInfo를 명시 적으로 설정해야합니다.

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("de-DE"); 

를하고 나중에 다시 변경 : 당신은 단지 한 번 테스트하는 경우

0

, 당신이 읽을 줄을 변경할 수 있습니다. 단위 테스트를하고 싶다면 문자열을 사용할 수 있습니다.

1

웹 서버의 로캘에 따라 소수 구분 기호와 같은 서식 문제를 처리하는 것은 일반적으로 잘못된 것입니다. 이로 인해 최종 사용자에게 실제로 원하는 것은 아니지만 서버 구성 문제가 추가되어 앱 배포가 어려워 질 수 있습니다. 예를 들어 프랑스어 및 영어 배포를 동일한 응용 프로그램을 단일 (캐나다!) 서버에 설치할 수 있습니다.

또한 시스템 로캘이 기존 문제로 인해 부적절한 것으로 설정되는 경우가 종종 있습니다 (예 : 일본어로만 작동하는 응용 프로그램 또는 전세계의 프로덕션 서버가 en-US를 '표준 Windows 버전 ').

일반적으로 응용 프로그램 계층에서 사이트 코드 배포 당 하나의 로캘 옵션을 사용하거나 사이트 사용자 당 하나의 로캘 옵션을 사용하는 것이 좋습니다. 그러면 누구나 앱에 로그인하여 적절한 숫자 형식을 얻을 수 있습니다.

마지막으로 앱의 인터페이스가 독점적 인 영어 인 경우 영어 숫자 형식을 유지하는 것이 더 적절할 수 있습니다. 독일인들은이 일에 익숙해 질 것입니다. 실제로는 일 수 있습니다. 더하기 영어와 독일어 UI 규칙을 혼용하는 것이 혼란 스러울 수 있습니다. IMO : 철저히 현지화하거나 전혀 현지화하지 마십시오.

0

뭔가 명확하게 설명해도 브라우저와 동일한 컴퓨터에서 실행되는 웹 응용 프로그램을 테스트하기 위해 컴퓨터를 독일어 모드로 설정하고 싶습니까?

이것은 실제 서버에서 실행될 때 서버가 독일 외부에 호스팅 될 수 있다고 가정합니다 (또는 독일에서는 가능하지만 미국 로케일로 설정된 컴퓨터에서는 많은 일이 발생합니다). 그렇다면 서버에 문화권을 설정하는 것이 실제로 원하는 것은 아니며 어쨌든 배포 할 때 그렇게 할 수 없습니다.

또 다른 문제가 있습니다. 사용자가 사용하려는 문화권을 감지 할 수있는 바보 같은 방법이 없습니다. HTTP 헤더에서 모든 종류의 정보를 검색하고 IP 주소에 대한 도메인 조회를 수행 할 수 있습니다.하지만 독일인이 미국에서 사이트를 사용하거나 미국인이 독일에서 사이트를보고 싶다면 " 및 ","소수 구분 기호에 대한?

다른 말로하면 클라이언트의 PC가 어떤 문화권을 사용하는지는 중요하지 않습니다. 귀하의 앱이 귀하의 문화를 감지 했더라도 모든 베팅이 취소 된 후에도 웹과 관련이 없으므로 관련이 없습니다. 제대로 사용자가 원하는 것이 아닐 수도 있습니다.

이렇게하려면 사용자에게 원하는 언어를 물어보고 런타임에 응용 프로그램의 로캘을 명시 적으로 설정해야합니다. 이것은 사용자에게 langague를 선택하도록 요청하는 것을 의미하지만 사용자에게 올바른 로케일을 사용하는 유일한 방법입니다. 모든 사용자가 독일어로되어 있다면 질문 할 필요가 없습니다. 단지 하드 코딩 만하면됩니다. 그의 접근 방식이 작동하는 것처럼 들리면 여기에 좋은 샘플 코드가 있습니다 : http://msdn.microsoft.com/en-us/library/bz9tc508.aspx.

행운을 빌어 요, 아니면 Viel Glück!

관련 문제