设备的本地化注意事项

更新:2007 年 11 月

与 .NET Framework 全功能版不同,.NET Compact Framework 在提供应用程序的本地化或全球化资源方面有一些限制。这些资源包括排序表、日期格式转换器、字符串比较器以及其他全球化实用工具。

开发人员应该确定设备的操作系统是否能够正确地呈现他们的应用程序。由于全球化要求和功能的不同,针对个人计算机上的 .NET Framework 全功能版编写的应用程序与针对设备上的 .NET Compact Framework 编写的应用程序可能存在差异。

如果您创建的 CultureInfo 实例表示的是 .NET Compact Framework 或设备操作系统不支持的区域性,那么 .NET Compact Framework 将返回 ArgumentException

.NET Compact Framework 尽可能使用本机操作系统呈现适合区域设置的内容,如使用适当的字体。它还根据设备操作系统来使用在区域性上正确的字符串比较和字符大小写,例如,当您使用 CompareToUpperToLower 时。

当前区域性设置

不能在设备上以编程方式设置当前区域性。它们由设备制造商设置或者由设备用户手动配置,例如,在运行 Windows CE 或 Windows CE .NET 的 Pocket PC 上的“区域设置”,当前区域设置是基于每台设备设置的。

应用程序启动时使用设备的区域设置。它的值由 CurrentCultureCurrentUICulture 属性反映出来。在 .NET Compact Framework 中,这些属性是只读的。

如果设备操作系统支持多语言用户界面 (MUI),.NET Compact Framework 将适应各种 UI 语言设置并在 CurrentUICulture 中反映设置值。如果设备不支持 MUI,CurrentUICulture 默认为 CurrentCulture

.NET Compact Framework 不支持 ThreadCurrentCultureCurrentUICulture 属性,因为区域性设置是基于每个设备而不是每个线程的。

设备的本地化设计注意事项

本地化智能设备应用程序时,应考虑以下支持和行为。

  • 日历

    .NET Compact Framework 只支持基于公历的日历,而且默认情况下使用公历。不支持尤太历和回历。

  • 字符串比较

    某些情况下,由于设备操作系统的不同,.NET Compact Framework 对字符串进行比较的方式可能与 .NET Framework 全功能版不同。如果传递的字符串包含压缩字符,则 CompareInfo 对象的 IndexOfLastIndexOfIsPrefixIsSuffix 的计算可能不正确。

  • 用户重写

    从内部全球化表中获取的一些 .NET Compact Framework 默认值与操作系统注册表设置指定的默认值不同。例如,.NET Compact Framework 和 .NET Framework 全功能版使用美国英语 (us-EN) 的四位数年份,而 Windows CE .NET 使用两位数。.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 Compact Framework 使用 Windows CE 本机函数来更改字符的大小写;而 .NET Framework 全功能版是在 Framework 中提供此功能。

    Windows CE 不提供更改代理项对大小写的功能,所以此功能在 .NET Compact Framework 中不受支持。

  • 排序

    .NET Compact Framework 使用本机 Windows CE 函数而不是托管代码算法执行排序操作。与该区域的桌面应用程序相比,这样可能产生不同的结果。

请参见

其他资源

.NET Compact Framework 中的编码和本地化