현상
Microsoft Windows Server 2003이 설치된 컴퓨터에 Microsoft 기술 자료의 다음 문서에서 설명하는 Microsoft .NET Framework 2.0 소프트웨어 업데이트를 설치합니다.
928365 2007년 7월 10일자 Windows Server 2003, Windows XP 및 Windows 2000용 .NET Framework 2.0 보안 업데이트에 대한 설명
컴퓨터에서 응용 프로그램을 실행하거나 웹 사이트에 액세스하려고 하면 다음과 유사한 오류 메시지가 나타날 수 있습니다.
[System.ArgumentException] : Culture 이름 'Culture'는 다음 13개 culture에 대해 지원되지 않습니다. en-CB az-AZ-Latn uz-UZ-Latn sr-SP-Latn az-AZ-Cyrl uz-UZ-Cyrl sr-SP-Cyrl bs-BA-Cyrl sr-BA-Latn sr-BA-Cyrl bs-BA-Latn iu-CA-Latn div-MV
또한 응용 프로그램에 이전 culture 이름 형식을 사용하는 리소스가 있고 사용자의 culture 이름에서 새 culture 이름 형식을 사용하는 경우 응용 프로그램에서 이전 culture 이름 형식에 대한 리소스를 찾을 수 없습니다.
원인
"현상" 절에서 설명하는 소프트웨어 업데이트는 .NET Framework 2.0의 누적 업데이트입니다. 이 업데이트에는 culture 이름의 변경 사항이 포함되어 있습니다. 새 culture 이름은 IETF 표준(RFC 4646 및 RFC 4647)의 구문을 따릅니다. culture 이름의 변경으로 인해 각 로캘의 식별자가 일관성을 갖게 되므로 상호 운용성이 향상됩니다.
이전 culture 이름과 새 culture 이름의 매핑은 다음과 같습니다.
이전 culture 이름 |
새 culture 이름 |
az-AZ-Latn |
az-Latn-AZ |
uz-UZ-Latn |
uz-Latn-UZ |
sr-SP-Latn |
sr-Latn-CS |
az-AZ-Cyrl |
az-Cyrl-AZ |
uz-UZ-Cyrl |
uz-Cyrl-UZ |
sr-SP-Cyrl |
sr-Cyrl-CS |
bs-BA-Cyrl |
bs-Cyrl-BA |
sr-BA-Latn |
sr-Latn-BA |
sr-BA-Cyrl |
sr-Cyrl-BA |
bs-BA-Latn |
bs-Latn-BA |
iu-CA-Latn |
iu-Latn-CA |
div-MV |
dv-MV |
en-CB |
en-029 |
해결 과정
이 문제를 해결하려면 이전 culture 이름을 사용하는 새 로캘에서 사용자 지정 culture를 만듭니다. 이렇게 하려면 다음과 같이 하십시오.
참고 여기에 제공된 예제 프로그램을 사용하려면 .NET Framework 2.0이 설치되어 있어야 합니다.
-
사용자 지정 culture를 만드는 데 사용할 수 있는 응용 프로그램을 만듭니다. 이렇게 하려면 다음과 같이 하십시오.
-
시작, 실행을 차례로 누르고 notepad를 입력한 다음 확인을 누릅니다.
-
메모장에 다음 코드를 붙여 넣습니다.
using System;
using System.Globalization;
public class MakeCultures
{
static void Main()
{
CreateCopyCulture("en-029", "en-CB");
CreateCopyCulture("az-Latn-AZ", "az-AZ-Latn");
CreateCopyCulture("uz-Latn-UZ", "uz-UZ-Latn");
CreateCopyCulture("sr-Latn-CS", "sr-SP-Latn");
CreateCopyCulture("az-Cyrl-AZ", "az-AZ-Cyrl");
CreateCopyCulture("uz-Cyrl-UZ", "uz-UZ-Cyrl");
CreateCopyCulture("sr-Cyrl-CS", "sr-SP-Cyrl");
CreateCopyCulture("bs-Cyrl-BA", "bs-BA-Cyrl");
CreateCopyCulture("sr-Latn-BA", "sr-BA-Latn");
CreateCopyCulture("sr-Cyrl-BA", "sr-BA-Cyrl");
CreateCopyCulture("bs-Latn-BA", "bs-BA-Latn");
CreateCopyCulture("iu-Latn-CA", "iu-CA-Latn");
CreateCopyCulture("dv-MV", "div-MV");
}
static void CreateCopyCulture(string strRealName, string strAliasName)
{
try
{
// Create a new culture based on the old name
CultureAndRegionInfoBuilder carib = new CultureAndRegionInfoBuilder(
strAliasName, CultureAndRegionModifiers.None);
carib.LoadDataFromCultureInfo(new CultureInfo(strRealName));
carib.LoadDataFromRegionInfo(new RegionInfo(strRealName));
carib.Register();
// Change the existing culture's parent to the old culture
carib = new CultureAndRegionInfoBuilder(strRealName,
CultureAndRegionModifiers.Replacement);
carib.Parent = new CultureInfo(strAliasName);
carib.Register();
// Verify they're registered...
CultureInfo ci = new CultureInfo(strAliasName);
Console.WriteLine("Aliased culture {0} has parent of {1}.", ci, ci.Parent);
ci = new CultureInfo(strRealName);
Console.WriteLine("\"Real\" culture {0} has parent of {1}.", ci, ci.Parent);
}
catch(Exception e)
{
Console.WriteLine("Unable to create custom culture " + strAliasName);
Console.WriteLine(e);
}
}
}참고 이 예제 프로그램은 새 culture의 부모를 이전 culture로 설정합니다. 이전 culture의 부모는 동시에 새 culture일 수 없습니다. 이렇게 되면 리소스 조회 중에 무한 재귀가 발생할 수 있기 때문입니다.
-
파일 메뉴에서 다른 이름으로 저장을 누릅니다.
-
다른 이름으로 저장 대화 상자에서 내 문서를 누르고 파일 이름 상자에 MakeCultures.cs를 입력한 다음 파일 형식 상자에서 모든 파일을 누르고 저장을 누릅니다.
-
메모장을 종료합니다.
-
-
1단계에서 만든 응용 프로그램을 실행하여 사용자 지정 culture를 만듭니다. 이렇게 하려면 다음과 같이 하십시오.
-
시작, 실행을 차례로 누르고 cmd를 입력한 다음 확인을 누릅니다.
-
cd "My Documents"를 입력한 다음 Enter 키를 누릅니다.
-
%windir%\Microsoft.NET\Framework\v2.0.50727\csc /r: sysglobl.dll MakeCultures.cs를 입력한 다음 Enter 키를 누릅니다.
-
MakeCultures.exe를 입력하여 프로그램을 실행하고 culture를 만듭니다.
-
현재 상태
Microsoft는 "본 문서의 정보는 다음의 제품에 적용됩니다." 절에 나열한 제품에서 이 문제를 확인했습니다.
Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.