다음을 통해 공유


전역화 및 지역화의 새로운 기능

업데이트: 2010년 5월

이 항목에서는 .NET Framework 버전 4에서 System.Globalization 네임스페이스의 클래스 및 열거형에 대한 변경 사항을 설명합니다. 이 항목에는 다음 단원이 포함되어 있습니다.

  • 새로운 중립 문화권

  • 새로운 특정 문화권

  • 업데이트된 전역화 속성 값

  • 현재 전역화 정보 가져오기

  • 문자열 처리

  • 로캘 식별자의 사용 감소

  • 중립 문화권의 속성

  • 사용자 지정 문화권의 변경 사항

  • 변경되지 않은 기능

새로운 중립 문화권

.NET Framework 4에서는 .NET Framework 3.5에서 최소 203개 문화권을 지원한 데 비해 최소 354개 문화권을 지원합니다. 새로운 문화권 중 상당수는 루트 중립 문화권에 대한 부모 체인을 완성하기 위해 추가된 중립 문화권입니다. 예를 들어, 기존의 이누크티투트어 문화권(음절형, 캐나다) 및 이누크티투트어 문화권(라틴 문자, 캐나다)에는 다음 표와 같이 세 가지 이누크티투트어 중립 문화권이 추가되었습니다.

문화권 표시 이름

문화권 이름

LCID

이누크티투트어

Iu

0x005d

이누크티투트어(음절형)

iu-Cans

0x785D

Inuktitut(음절형, 캐나다)

iu-Cans-CA

0x045D

Inuktitut(라틴 문자)

iu-Latn

0x7C5D

이누크티투트어(라틴 문자, 캐나다)

iu-Latn-CA

0x085D

새로운 특정 문화권

.NET Framework 4에서는 세르비아어 문화권 같은 새로운 특정 문화권도 도입되었습니다. 이전의 세르비아어 문화권의 이름은 표시 이름 충돌을 방지하기 위해 세르비아어(키릴 자모, 세르비아-몬테네그로(이전)) 및 세르비아어(라틴 문자, 세르비아-몬테네그로(이전))으로 변경되었습니다. 이러한 문화권은 문화권 이름 및 문화권 식별자를 비롯한 기존 정보와 함께 .NET Framework에서 유지됩니다.

문화권 표시 이름

문화권 이름

LCID

세르비아어 - 세르비아(라틴 문자)

sr-Latn-RS

0x241A

세르비아어 - 세르비아(키릴 자모)

sr-Cyrl-RS

0x281A

세르비아어 - 몬테네그로(라틴 문자)

sr-Latn-ME

0x2C1A

세르비아어 - 몬테네그로(키릴 자모)

sr-Cyrl-ME

0x301A

중국어 문화권의 표시 이름은 명명 규칙 LanguageName ([Script,] Country/RegionName)을 따르기 위해 변경되었습니다. .NET Framework 4에서는 zh-Hans 및 zh-Hant와 구분하기 위해 표시 이름 zh-CHS 및 zh-CHT에 "레거시"라는 단어가 추가되어 있습니다. zh는 최근에 Windows에 도입되었으며 표시 이름은 "중국어"입니다.

표시 이름

문화권 이름

LCID

중국어

zh

0x7804

중국어(간체) 레거시

zh-CHS

0x0004

중국어(번체) 레거시

zh-CHT

0x7C04

중국어(간체)

zh-Hans

0x0004

중국어(번체)

zh-Hant

0x7C04

중국어(간체, PRC)

zh-CN

0x0804

중국어(번체, 홍콩 특별 행정구)

zh-HK

0x0C04

중국어(번체, 마카오 특별 행정구)

zh-MO

0x1404

중국어(간체, 싱가포르)

zh-SG

0x1004

중국어(번체, 대만)

zh-TW

0x0404

이제 중국어 문화권의 부모 체인에는 루트 중국어 문화권이 포함됩니다. 다음 예제에서는 두 가지 중국어 문화권의 완전한 부모 체인을 보여 줍니다.

  • zh-CN → zh-CHS → zh-Hans → zh → 고정

  • zh-TW → zh-CHT → zh-Hant → zh → 고정

티베트어(PRC), 프랑스어(모나코), 타마지트어(라틴 문자, 알제리) 및 스페인어(스페인, 국제 정렬) 표시 이름 역시 업데이트되었습니다. 표시 이름이 변경되면 주로 영어 및 모국어 이름이 영향을 받게 되며, ISO와 스크립트, 언어 및 국가의 약식 이름도 변경될 수 있습니다.

업데이트된 전역화 속성 값

.NET Framework 4에서는 통화, 날짜 및 시간 형식, 요일 및 월 이름, A.M. 및 P.M. 지정자, 일부 숫자 형식 지정 속성 같은 전역화 속성의 값도 업데이트합니다. 다음 표에서는 System.Globalization.RegionInfo 클래스에서 통화 이름 변경의 예를 제공합니다.

문화권 이름

버전 3.5 통화 이름

버전 4 통화 이름

mt-MT

몰타 리라

유로

sk-SK

슬로바키아 코루나

유로

sl-SI

톨라르

유로

tr-TR

새 터키 리라

터키 리라

다음 표에서는 System.Globalization.DateTimeFormatInfo 클래스에서 간단한 날짜 패턴 변경의 예를 제공합니다.

문화권 이름

버전 3.5 간단한 날짜 패턴

버전 4 간단한 날짜 패턴

ar-SA

dd/MM/yy

dd/MM/yyyy

prs-AF

dd/MM/yy

yyyy/M/d

ps-AF

dd/MM/yy

yyyy/M/d

pt-BR

d/M/yyyy

dd/MM/yyyy

아랍어 로캘의 DateTimeFormatInfo.ShortestDayNames 속성 같은 여러 로캘의 요일 및 월 이름 등의 달력 데이터가 일부 변경되었습니다. prs-AF, ps-AF 및 ug-CN과 같이 오른쪽에서 왼쪽으로 쓰는 일부 로캘의 경우 TextInfo.IsRightToLeft 속성에 대한 값이 잘못되어 있었고 이번 버전에서 수정되었습니다.

현재 전역화 정보 가져오기

.NET Framework 4의 주요 전역화 기능 중 하나는 사용 가능한 가장 최신 정보를 제공하는 기능입니다. 이번 릴리스에서 제공할 가장 오래된 전역화 정보는 배송 시에 사용 가능한 데이터이며, 이 데이터는 Windows 7 이전의 Windows에서 실행되는 경우에만 사용할 수 있습니다. Windows 7 이상 릴리스에 실행할 경우 전역화 정보는 운영 체제에서 직접 검색되므로 고객은 새 Windows로 업그레이드하면 현재 전역화 정보를 얻게 됩니다. Windows 7 이상 버전을 실행하는 고객은 네이티브 Win32 및 관리되는 .NET 응용 프로그램을 위한 통합 전역화 환경을 활용할 수 있습니다.

지속적으로 변화하는 현실에 맞춰 전역화 정보는 수시로 변경될 수 있습니다. 따라서 개발자는 전역화 속성의 값이 릴리스 간에 유지되거나 .NET Framework의 동일 릴리스에서 변경되지 않을 것으로 기대하면 안 됩니다. 이는 .NET Framework 사용자에게는 완전히 새로운 사실은 아닙니다. .NET Framework 2 이후 지원되어 온 Windows 전용 문화권의 속성은 다른 버전의 Windows에서 실행될 경우 다른 값을 가질 수도 있습니다.

문화권 이름은 문화권 정보의 가장 안정적인 속성이며 향후 릴리스에서도 변경되지 않을 것으로 보입니다. 문화권 표시 이름과 같은 기타 속성은 언제든지 변경될 수 있으므로 응용 프로그램은 표시 이름의 철자 또는 기타 텍스트나 숫자 데이터에 종속되지 않아야 합니다.

.NET Framework 4에서 전역화 정보 검색 메커니즘이 변경되었습니다. 응용 프로그램이 Windows 7 이상 버전에서 실행되고 있는 경우 전역화 정보를 운영 체제에서 직접 검색합니다. 응용 프로그램이 이전 버전의 Windows(예: Windows Vista, Windows XP, Windows Server 2003 또는 Windows Server 2008)에서 실행되고 있는 경우에는 최신 데이터를 검색하기 위해 전역화 정보를 내부 데이터 저장소에서 검색합니다.

새로운 전역화 정보 검색 모델에서는 전역화 정보가 호스트 운영 체제에 따라 여러 위치에서 검색되므로 일부 CultureTypes의 정의가 변경됩니다. CultureTypes 멤버인 WindowsOnlyCultures 및 FrameworkCultures가 이제 사용되지 않습니다. 이러한 멤버를 사용하려고 하면 컴파일은 성공하지만 컴파일러에서 경고를 생성합니다. WindowsOnlyCultures를 사용하면 문화권이 반환되지 않고, FrameworkCultures는 모든 문화권을 반환합니다. 다른 CultureTypes 멤버의 정의는 이전과 동일합니다.

문자열 처리

System.Globalization 네임스페이스의 CharUnicodeInfo, CompareInfo, StringInfo, TextInfoTextElementEnumerator를 비롯한 많은 .NET Framework 클래스가 정렬, 대/소문자 구분 및 정규화 규칙을 구현하고 유니코드 문자 정보를 검색합니다. .NET Framework 4에서 이러한 기능은 CJK(중국어, 일본어 및 한국어) 언어를 위한 보다 풍부한 언어 정렬 및 대/소문자 구분 기능을 제공하고 고객들이 보고한 많은 문제를 해결하는 Windows 7과 동기화됩니다. 가장 중요한 변경 사항은 유니코드 5.1 표준을 준수하게 되었다는 점입니다. 이 표준은 새 기호, 화살표, 분음 부호, 구두점, 수학 기호, CJK 스트로크, 표의문자, 말라얄람어 및 텔루구어 수치 문자 같은 1400개 정도의 문자에 대한 지원을 추가합니다. 또한 Unicode 5.1은 라틴 문자, 미얀마 문자, 아랍 문자, 그리스 문자, 몽골 문자, 키릴 문자, 굴목키 문자, 오리야 문자, 타밀 문자, 텔루구 문자 및 말라얄람 문자 같은 기존 스크립트 내의 문자에 대한 정렬 및 대/소문자 구분을 개선하고, 순다 문자, 렙차 문자, 올 치키 문자, 바이 문자, 사우라슈트라 문자, 카야 리 문자, 레장 문자, 참족 문자 같은 새로운 스크립트에 대한 지원도 추가합니다.

데이터베이스 인덱싱과 같이 Windows의 여러 버전 간에 일관된 문자열 처리 동작이 필요한 시나리오가 여러 가지 있습니다. .NET Framework 4에서는 호스트 Windows 버전과 상관없이 문자열 처리 작업이 일관되게 작동하도록 합니다.

데이터베이스 인덱스를 만들거나 정렬 키를 저장하는 기존 응용 프로그램은 .NET Framework 2.0 또는 3.5의 정렬 및 대/소문자 구분 동작에 의존할 수 있습니다. 이러한 응용 프로그램을 지원하기 위해 .NET Framework 4에서는 개발자가 응용 프로그램의 구성 파일에 <CompatSortNLSVersion> 요소를 포함하여 레거시 정렬 및 대/소문자 구분 동작을 적용할 수 있습니다. 응용 프로그램 도메인을 구성할 때 AppDomainSetup.SetCompatibilitySwitches 메서드를 "NetFx40_LegacySecurityPolicy" 스위치와 함께 호출하여 응용 프로그램 도메인별로 레거시 정렬 및 대/소문자 구분 규칙을 적용할 수도 있습니다. 레거시 동작을 성공적으로 복원하려면 로컬 시스템에 sort00001000.dll 동적 링크 라이브러리가 있어야 합니다.

.NET Framework 4에서는 일부 문화권에 여러 가지 정렬 옵션을 제공합니다. 예를 들어 독일어(독일) 문화권은 기본적으로 사전 정렬 순서를 사용하지만 대체 정렬 순서로 전화 번호부 정렬을 지원합니다. 또한 중국어(간체, PRC) 문화권은 기본 동작으로 발음별 정렬을 지원하고, 대체 정렬 순서로 획수별 정렬을 지원합니다. 대체 정렬 순서를 지정하려면 응용 프로그램에서 대체 정렬 순서의 LCID 또는 이름을 사용하여 CultureInfo 개체를 만들면 됩니다. 세 가지 대체 정렬 순서가 Windows에서 더 이상 사용되지 않으므로 .NET Framework 4에서 제거되었습니다. 사용되지 않는 이러한 대체 정렬 순서의 LCID를 사용하여 CultureInfo 개체를 생성하려고 하면 CultureNotFoundException 예외가 throw됩니다. .NET Framework에서 지원하는 대체 정렬 순서가 다음 표에 나열되어 있습니다.

문화권 이름

언어-국가/지역

기본 정렬 이름 및 LCID

대체 정렬 이름 및 LCID

zh-HK

중국어 - 홍콩 특별 행정구

기본: 0x00000c04

zh-HK_stroke: 0x00020c04

ja-JP

일본어 - 일본

기본: 0x00000411

ja-JP_unicod: 0x00010411

ko-KR

한국어 - 대한민국

기본: 0x00000412

ko-KR_unicod: 0x00010412

로캘 식별자의 사용 감소

.NET Framework 4에서 ToStringToString 메서드는 모든 문화권에 대한 LCID를 사용하지 않고 문화권 이름을 사용합니다. 예를 들어, .NET Framework 4에서는 이전 버전의 .NET Framework에서 반환되는 값인 "en-US CompareInfo – 1033" 대신 "en-US CompareInfo - en-US"를 반환합니다.

중립 문화권의 속성

응용 프로그램이 DateTimeFormatInfo.FirstDayOfWeek 같은 중립 문화권 속성에 액세스하려고 하면 이전 버전의 .NET Framework에서는 예외를 throw합니다. .NET Framework 4에서는 중립 문화권 속성이 해당 중립 문화권에서 가장 지배적인 특정 문화권을 반영하는 값을 반환합니다. 예를 들어, 프랑스어 중립 로캘은 대부분의 속성 값을 프랑스어(프랑스)에서 검색합니다. FirstDayOfWeek 속성은 프랑스어(프랑스) 문화권의 해당 속성 값을 반영하는 DayOfWeek.Monday를 반환합니다.

그러나 언어 이름과 같은 일부 속성은 지배적인 문화권과 다른 값을 가집니다. 예를 들어, 노르웨이어 중립 문화권의 언어 이름은 노르웨이어이지만 노르웨이어(복말, 노르웨이) 문화권의 언어 이름은 노르웨이어(복말)입니다.

.NET Framework 4에서 중립 문화권의 일부 속성 및 메서드는 중립 문화권 대신 특정 문화권을 반영하는 값을 반환합니다. CultureInfo 클래스의 KeyboardLayoutId 속성 및 GetConsoleFallbackUICulture 메서드가 이러한 변경의 두 가지 예입니다.

  • KeyboardLayoutId 값 변경 사항:

    문화권 이름

    버전 3.5

    버전 4

    ar

    1

    1025

    es

    10

    1034

    fr

    12

    1036

    zh-CHS

    4

    2052

  • GetConsoleFallbackUICulture 값 변경 사항:

    문화권 이름

    버전 3.5

    버전 4

    af

    af

    af-ZA

    de

    de

    de-DE

    en

    en

    en-US

    ja

    ja

    ja-JP

사용자 지정 문화권의 변경 사항

.NET Framework 버전 2.0에서 만든 중립 대체 문화권은 .NET Framework 4에서 로드되지 않습니다.

CultureAndRegionInfoBuilder 클래스를 사용하여 대체 문화권을 등록하는 경우 사용자 지정 문화권에서 재정의된 정보는 해당 사용자 지정 문화권을 만든 프로세스에서 즉시 사용할 수 없습니다. 그러나 이 사용자 지정 문화권을 등록한 후 시작된 프로세스는 재정의된 정보를 읽을 수 있습니다.

변경되지 않은 기능

텍스트 정보, 인코딩, 달력 기능 및 IDN(Internationalized Domain Name) 기능은 .NET Framework 4에서 변경되지 않았습니다. 이러한 영역은 계속 이전과 같이 작동합니다.

변경 기록

날짜

변경 내용

이유

2010년 5월

레거시 정렬 및 비교를 복원하려면 sort00001000.dll이 필요하다는 점을 설명했습니다.

콘텐츠 버그 수정