グローバリゼーションとローカリゼーションの新機能

更新 : 2010 年 5 月

このトピックでは、.NET Framework Version 4 の System.Globalization 名前空間のクラスおよび列挙体に対する変更について説明します。このトピックは、次のセクションで構成されています。

  • 新しいニュートラル カルチャ

  • 新しい特定カルチャ

  • 更新されたグローバリゼーション プロパティ値

  • 最新のグローバリゼーション情報の入手

  • 文字列処理

  • ロケール識別子の使用箇所の減少

  • ニュートラル カルチャのプロパティ

  • カスタム カルチャの変更

  • 変更されていない機能

新しいニュートラル カルチャ

.NET Framework 3.5 では、少なくとも 203 のカルチャがサポートされていましたが、.NET Framework 4 では、少なくとも 354 のカルチャがサポートされています。 新しいカルチャの多くは、親チェーンを完成するためにルートのニュートラル カルチャに追加されたニュートラル カルチャです。 たとえば、次の表に示すように、既存のカルチャであるイヌクティトット語 (カナダ音節文字、カナダ) およびイヌクティトット語 (ラテン、カナダ) に、3 種類のニュートラルなイヌクティトット語のカルチャが追加されました。

カルチャの表示名

カルチャ名

LCID

イヌクティトット語

Iu

0x005d

イヌクティトット語 (音節)

iu-Cans

0x785D

イヌクティトット語 (カナダ音節文字、カナダ)

iu-Cans-CA

0x045D

イヌクティトット語 (ラテン)

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-CHS および zh-CHT の表示名には、zh-Hans と zh-Hant を区別できるように "レガシ" という語が付けられています。 最近 Windows に導入された zh は、カルチャの表示名が "中国語" になっています。

表示名

カルチャ名

LCID

中国語

zh

0x7804

簡体字中国語レガシ

zh-CHS

0x0004

繁体字中国語レガシ

zh-CHT

0x7C04

簡体字中国語

zh-Hans

0x0004

繁体字中国語

zh-Hant

0x7C04

中国語 (簡体字、中国)

zh-CN

0x0804

中国語 (繁体字、香港)

zh-HK

0x0C04

中国語 (繁体字、マカオ)

zh-MO

0x1404

中国語 (簡体字、シンガポール)

zh-SG

0x1004

中国語 (繁体字、台湾)

zh-TW

0x0404

中国語カルチャの親チェーンに、ルートの中国語カルチャが含まれるようになりました。 以下に、2 種類の中国語の特定カルチャに対する完全な親チェーンの例を示します。

  • zh-CN → zh-CHS → zh-Hans → zh → インバリアント言語

  • zh-TW → zh-CHT → zh-Hant → zh → インバリアント言語

チベット語 (中国)、フランス語 (モナコ)、タマジット語 (ラテン、アルジェリア)、およびスペイン語 (スペイン、インターナショナル ソート) の表示名も更新されています。 表示名が変更された場合、通常、その変更は英語名とネイティブ名に反映されます。ただし、スクリプト、言語、および国の ISO と略名も変更される場合があります。

更新されたグローバリゼーション プロパティ値

.NET Framework 4 では、通貨、日時形式、曜日と月の名前、AM/ PM 指定子、一部の数値書式設定プロパティなど、グローバリゼーション プロパティの値も更新されています。 次の表に、System.Globalization.RegionInfo クラスでの通貨名の変更の例を示します。

カルチャ名

Version 3.5 の通貨名

Version 4 の通貨名

mt-MT

マルタ リラ

ユーロ

sk-SK

スロバキア コルナ

ユーロ

sl-SI

スロベニア トラル

ユーロ

tr-TR

新トルコ リラ

トルコ リラ

次の表に、System.Globalization.DateTimeFormatInfo クラスでの短い日付形式のパターンの変更の例を示します。

カルチャ名

Version 3.5 の短い日付形式のパターン

Version 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 の主要なグローバリゼーション機能の 1 つに、最新情報が利用可能になると、それが提供される機能があります。 このリリースが提供する最も古いグローバリゼーション情報は、出荷の時点で利用可能なデータであり、Windows 7 よりも前の Windows で実行している場合に限られます。 Windows 7 以降のリリースで実行している場合は、グローバリゼーション情報は、オペレーティング システムが直接取得します。つまり、新しい Windows にアップグレードするときに、最新のグローバリゼーション情報を入手できますです。 Windows 7 以降のバージョンを実行しているユーザーは、ネイティブ (Win32) アプリケーションとマネージ (.NET) アプリケーションの両方について、統一されたグローバリゼーション エクスペリエンスを実現できます。

世界情勢は絶えず変化しているため、グローバリゼーション情報は、随時変化します。開発者は、.NET Framework の異なるリリース間だけでなく、同じリリース内でも、グローバリゼーションのプロパティの値が変わる可能性があることに注意する必要があります。 これは、.NET Framework ユーザーにとってまったく新しい動作というわけではありません。 .NET Framework 2 以降サポートされていた WindowsOnlyCultures のプロパティは、異なるバージョンの 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 名前空間の CharUnicodeInfoCompareInfoStringInfoTextInfo、および TextElementEnumerator を含む多くの .NET Framework クラスは、並べ替え、大文字/小文字、および正規化の規則を実装し、Unicode 文字情報を取得します。 .NET Framework 4 では、これらの機能が Windows 7 と同期されます。これにより、中国語、日本語、韓国語 (CJK) に関する言語的な並べ替えおよび大文字/小文字の機能が充実しました。また、ユーザーから寄せられたさまざまな問題についても修正されています。 最も重要な変更は、Unicode 5.1 への準拠です。これにより、新しい記号、矢印、分音記号、句読点、算術記号、CJK ストローク、漢字、マラヤラム語、テルグ語の数字など、約 1,400 文字のサポートが追加されました。 さらに、Unicode 5.1 によって、ラテン語、ミャンマー語、アラビア語、ギリシャ語、モンゴル語、キリル語、グルムキー、オリヤー語、タミール語、テルグ語、およびマラヤラム語の既存のスクリプトにおける文字の並べ替えおよび大文字/小文字の処理も向上しました。 また、新しいスクリプトとして、スンダ文字、レプチャ文字、オル チキ文字、ヴァイ文字、サウラーシュトラー文字、カヤーリー文字、ルジャン文字、およびチャム文字のサポートが追加されました。

データベースのインデックス作成など、異なるバージョンの Windows 間での文字列の処理方法の統一が求められるさまざまな状況があります。 .NET Framework 4 では、ホストしている Windows に関係なく、文字列の処理方法における動作の整合性が保証されています。

データベースのインデックス作成または並べ替えキーの格納を行う既存のアプリケーションは、.NET Framework 2.0 または 3.5 の並べ替えおよび大文字/小文字の処理動作に依存する場合があります。 このようなアプリケーションをサポートするために、開発者は .NET Framework 4 を使用してアプリケーションの構成ファイルに <CompatSortNLSVersion> 要素を含めることにより、並べ替えおよび大文字/小文字の処理のレガシ動作を適用できます。 また、アプリケーション ドメインの構成時に "NetFx40_LegacySecurityPolicy" スイッチを指定して AppDomainSetup.SetCompatibilitySwitches メソッドを呼び出すことにより、並べ替えおよび大文字/小文字のレガシ規則をアプリケーション ドメイン単位で適用することもできます。 レガシ動作の復元が成功するかどうかは、ローカル システム上のダイナミック リンク ライブラリ sort00001000.dll の存在に依存します。

.NET Framework 4 には、一部のカルチャ用に複数の並べ替えオプションが用意されています。 たとえば、ドイツ語 (ドイツ) カルチャでは、既定では辞書の並べ替え順序が使用されますが、代替の並べ替え順序として電話帳順もサポートされます。 もう 1 つ例を挙げると、中国語 (簡体字、中国) カルチャでは、既定の動作としての発音による並べ替えのほかに、代替の並べ替え順序として画数による並べ替えもサポートされています。 代替の並べ替え順序を指定するには、代替の並べ替え順序の LCID または名前を使用して CultureInfo オブジェクトを作成します。 .NET Framework 4 では、3 つの代替の並べ替え順序が削除されました (これらは Windows では使用されなくなったため)。これらの並べ替え順序の LCID を使用して CultureInfo オブジェクトを構築しようとすると、CultureNotFoundException 例外がスローされます。次の表は、.NET Framework でサポートされている代替の並べ替え順序を示しています。

カルチャ名

言語 - 国/地域

既定の並べ替え名と LCID

代替並べ替え名と LCID

zh-HK

中国語 - 香港特別行政区

Default: 0x00000c04

zh-HK_stroke: 0x00020c04

ja-JP

日本語 – 日本

Default: 0x00000411

ja-JP_unicod: 0x00010411

ko-KR

韓国語 – 韓国

Default: 0x00000412

ko-KR_unicod: 0x00010412

ロケール識別子の使用箇所の減少

.NET Framework 4 では、ToString メソッドと ToString メソッドは、すべてのカルチャについて、LCID のないカルチャ名を使用します。 たとえば、.NET Framework 4 は、以前のバージョンの .NET Framework で戻り値として使用されていた "en-US CompareInfo - 1033" ではなく "en-US CompareInfo - en-US" を返します。

ニュートラル カルチャのプロパティ

以前のバージョンの .NET Framework では、アプリケーションが、DateTimeFormatInfo.FirstDayOfWeek プロパティなど、ニュートラル カルチャのプロパティにアクセスしようとすると、例外が発生していました。 .NET Framework 4 では、ニュートラル カルチャのプロパティは、そのニュートラル カルチャに対して最も優先度の高い特定カルチャを反映する値を返します。 たとえば、フランス語のニュートラル ロケールは、フランス語 (フランス) からほとんどのプロパティの値を取得します。 FirstDayOfWeek プロパティは、フランス語 (フランス) カルチャのそのプロパティの値を反映する DayOfWeek.Monday を返します。

ただし、一部のプロパティ (言語名など) の値は優先度の高いカルチャとは異なります。 たとえば、ノルウェー語のニュートラル カルチャの言語名はノルウェー語ですが、特定カルチャであるノルウェー語ブークモール (ノルウェー) の言語名はノルウェー語 (ブークモール) です。

.NET Framework 4 では、ニュートラル カルチャの一部のプロパティおよびメソッドは、ニュートラル カルチャの代わりに特定カルチャを反映する値を返します。 この変更の例として、KeyboardLayoutId プロパティおよび CultureInfo クラスの GetConsoleFallbackUICulture メソッドの 2 つの例を示します。

  • KeyboardLayoutId 値の変更:

    カルチャ名

    Version 3.5

    Version 4

    ar

    1

    1025

    es

    10

    1034

    fr

    12

    1036

    zh-CHS

    4

    2052

  • GetConsoleFallbackUICulture 値の変更:

    カルチャ名

    Version 3.5

    Version 4

    af

    af

    af-ZA

    de

    de

    de-DE

    en

    en

    en-US

    ja

    ja

    ja-JP

カスタム カルチャの変更

.NET Framework 4 では、.NET Framework Version 2.0 によって作成されたニュートラルの置換カルチャが読み込まれません。

CultureAndRegionInfoBuilder クラスを使用して置換カルチャを登録した場合、カスタム カルチャによってオーバーライドされた情報は、カスタム カルチャを作成したプロセスですぐに使用できるようにはなりません。 ただし、このカスタム カルチャの登録後に起動されたプロセスは、オーバーライドされた情報を読み取ることができます。

変更されていない機能

.NET Framework 4 では、テキスト情報、エンコード、カレンダー機能、および国際化ドメイン名 (IDN: Internationalized Domain Name) 機能は変更されていません。 これらの機能は、今までと同様に使用できます。

履歴の変更

日付

履歴

理由

2010 年 5 月

並べ替えおよび比較のレガシ規則の復元が sort00001000.dll に依存していることについての説明が追加されました。

コンテンツ バグ修正