C# .NET 程序集中的全球化






1.27/5 (4投票s)
.NET 实现全球化的方法,以及成功实现全球化所需的工具和方法。
摘要
C# .NET 程序集经常在全球范围内构建和部署。当前将开发外包到海外的业务模式导致了全球客户的出现。实施外包解决方案的开发人员必须考虑当地的语言和习俗。在不同的文化中,表达字符、日期、时间、货币和浮点数的方式各不相同。在本文中,Anupam Banerji 将介绍 .NET 实现全球化的方法,以及成功实现全球化所需的工具和方法。
引言
如今的软件开发业务模式常常导致设计和实际实现分离在两个不同的国家。这将导致文化差异。日本的日期和字符表达方式与阿联酋或澳大利亚不同。西班牙的数据库存储货币信息的方式与美国的数据库不同。开发人员必须能够实现一个外国设计,并能提供预期的海外结果。
.NET Framework 为我们提供了处理全球化问题的对象。还有几种比较和排序不同文化格式的方法。将格里高利日期转换为回历日期只需一个调用即可完成。
文化和区域设置
在 .NET Framework 中设置文化有两种方法。这两种属性都属于 System.Threading 命名空间。它们是 Thread.CurrentThread.CurrentCulture 和 Thread.CurrentThread.CurrentUICulture。CurrentCulture 属性用于以特定的文化格式计算变量值。CurrentUICulture 属性决定了值的实际显示格式。
要设置属性,我们创建一个 CultureInfo 对象实例。
using System.Globalization; CultureInfo ci = new CultureInfo("en-US");
字符串“en-US”告诉 .NET 运行时,中性文化是英语,区域或地区是美国。CultureInfo 实例具有许多只读属性,开发人员可以使用这些属性来确定特定的文化设置。
自定义文化
可以通过创建 CultureAndRegionInfoBuilder 属性的实例来创建自定义文化。应调用此对象实例的 Register() 方法将文化保存到注册表中。下面的示例展示了如何基于现有文化创建新文化。
CultureAndRegionInfoBuilder cb = new CultureAndRegionInfoBuilder("fr-AB", CultureAndRegionModifiers.None); cb.LoadDataFromCultureInfo(new CultureInfo ("fr-FR")); cb.LoadDataFromRegionInfo(new RegionInfo ("FR"));
这将创建一个新的文化“fr-AB”,复制法国法语的文化设置。要注册新文化,必须以管理员权限执行程序集。
字符串排序和比较
字符串排序是不同文化之间的主要区别。字符在排序顺序中的处理方式不同,而且文化通常支持多种排序顺序。例如,德国德国文化有两种排序顺序:一种是字典排序顺序,另一种是电话簿排序顺序。匈牙利语有默认排序顺序和技术排序顺序,格鲁吉亚语有传统排序顺序和现代排序顺序!设计应在批准前指定排序顺序要求。
要使用备用排序顺序,请使用十六进制的区域标识符 (LCID) 创建 CultureInfo 类的实例。匈牙利语技术排序 LCID 为 0x0001040e。因此,CultureInfo 实例的创建方式如下:
CultureInfo ci = new CultureInfo (0x0001040e);
然后,将实例化的对象分配给 CurrentCulture 属性。然后可以使用 .NET 中的排序方法(例如,在集合对象中)。数据将按照 CultureInfo.LCID 属性的 LCID 格式进行排序。
比较两种文化
为了比较两种文化之间的值,必须确保任何比较都只在这两种文化中的一种中进行。还有一种比较可以在不变文化中进行。要执行区分文化但区域无关的比较,请将 CurrentCulture 属性设置为 CultureInfo.InvariantCulture。
一个快速示例:区分文化但区域无关的排序
我们有一个随机字符串列表,希望对其进行排序。文本文件在挪威。字符串是:
ädgd asdj udfjt xhr üsdg
在挪威语文化(“nn-NO”)中排序后的字符串是:
asdj udfjt xhr üsdg ädgd
ü 和 ä 字符的位置在 z 字符之后。区分文化但区域无关的字符串是:
ädgd asdj udfjt üsdg xhr
当排序结果需要与其它文化进行比较时(例如,与捷克语、法语、丹麦语、西班牙语或英语进行比较),应使用区分文化但区域无关的排序。
全球化允许 .NET 开发人员以特定于文化和区域的格式对数据类型进行排序、处理和显示。良好的 .NET 设计将包含全球化,特别是当产品外包给外国文化或区域时。集成全球化的产品将确保最终用户对显示感到满意,并且产品按要求运行。
可以从 Coactum Solutions 网站下载此技术文章的 PDF 版本,网址为:http://www.coactumsolutions.com/Articles.aspx。