デバイスのローカリゼーションに関する考慮事項
更新 : 2007 年 11 月
.NET Framework とは異なり、.NET Compact Framework では、アプリケーションのローカリゼーションまたはグローバリゼーションのために用意するリソースの領域に制約があります。このようなリソースには、並べ替えテーブル、日付形式変換機能、文字列比較機能、およびその他のグローバリゼーション ユーティリティがあります。
開発者は、デバイスのオペレーティング システムがアプリケーションを正しく表示できるかどうかを判別する必要があります。パーソナル コンピュータで .NET Framework 向けに作成されたアプリケーションと、デバイスで .NET Compact Framework 向けに作成されたアプリケーションでは、グローバリゼーションの要件や機能に違いがあります。
.NET Compact Framework またはデバイス オペレーティング システムでサポートされていないカルチャを表す CultureInfo のインスタンスを作成した場合、.NET Compact Framework は ArgumentException を返します。
.NET Compact Framework は、可能な場合は常にネイティブ オペレーティング システムを使用して、適切なフォントの使用を含め、ロケールに対応するコンテンツを表示します。また、Compare, ToUpper および ToLowerを使用するときなどは、カルチャに応じた適切な文字列比較や大文字と小文字の区別についても、デバイス オペレーティング システムに従います。
現在のカルチャ設定
デバイスでは、現在のカルチャをプログラムで設定できません。カルチャはデバイスのメーカーが設定するか、Windows CE または Windows CE .NET を実行する Pocket PC で [地域] を使用するなどして、デバイス ユーザーが手動で設定できます。現在のカルチャはデバイス単位で設定されます。
アプリケーションは、開始時にデバイスのロケール設定を使用します。この値は、CurrentCulture プロパティおよび CurrentUICulture プロパティに反映されます。これらのプロパティは、.NET Compact Framework では読み取り専用です。
デバイス オペレーティング システムが多言語ユーザー インターフェイス (MUI: Multilingual User Interface) をサポートしている場合、.NET Compact Framework は個別の UI 言語設定を調整し、その値を CurrentUICulture に反映します。デバイスが MUI をサポートしていない場合、CurrentUICulture の既定値は CurrentCulture になります。
.NET Compact Framework では、カルチャ設定がスレッドごとではなくデバイスごとに適用されるので、Thread の CurrentCulture プロパティおよび CurrentUICulture プロパティがサポートされません。
デバイスのローカリゼーション デザインに関する考慮事項
スマート デバイス アプリケーションをローカライズするときは、次に示すサポート状況と動作を考慮する必要があります。
暦
.NET Compact Framework では、グレゴリオ暦に基づく暦だけがサポートされ、既定ではグレゴリオ暦が使用されます。ヘブライ暦または回教暦はサポートされていません。
文字列比較
デバイス オペレーティング システムの違いのために、文字列の比較方法が .NET Framework とは異なる場合があります。CompareInfo オブジェクトの IndexOf、LastIndexOf、IsPrefix および [ M:System.Globalization.CompareInfo.IsSuffix(System.String,System.String)] では、渡された文字列に圧縮文字が含まれる場合に、評価が正しく行われない場合があります。
ユーザー オーバーライド
内部グローバリゼーション テーブルから取得した、.NET Compact Framework の一部の既定値は、オペレーティング システムのレジストリ設定で指定されている既定値と異なります。たとえば、.NET Compact Framework および .NET Framework では、米国英語 (us-EN) で 4 桁の年を使用しますが、Windows CE .NET では 2 桁を使用します。.NET Compact Framework の既定値は、デバイス オペレーティング システムの既定値よりも優先されます。
アプリケーションは、初期化時にオーバーライド値を取得するため、それよりも後の値の変更は無視されます。
エンコーディング
.NET Compact Framework では、すべてのデバイスで文字エンコーディングとして Unicode (BE および LE)、UTF8、UTF7、および ASCII をサポートしています。
コード ページ エンコーディングのサポートには制約があり、エンコーディングがデバイスのオペレーティング システムで認識された場合にだけサポートされます。
必要なエンコーディングがデバイスで使用できない場合は、.NET Compact Framework が PlatformNotSupportedException をスローします。
オプションのコンポーネント Mlang.dll がデバイスにある場合は、CP 51932 (EUC-JP)、CP 50220 (ISO2022JP)、および CP 50221 (cslSO2022JP) のコード ページがサポートされます。
サロゲート ペア、大文字と小文字の変更
.NET Framework ではフレームワークに文字を大文字または小文字に変更する機能が用意されていますが、.NET Compact Framework では、ネイティブな Windows CE 関数を使用して、文字を大文字または小文字に変更します。
Windows CE では、サロゲート ペアの大文字と小文字を変更できないため、この機能は .NET Compact Framework ではサポートされていません。
並べ替え
.NET Compact Framework では、マネージ コード アルゴリズムではなく、並べ替え処理を実行するネイティブな Windows CE 関数を使用します。このために、同じロケールのデスクトップ アプリケーションとは異なる結果が得られる場合があります。