.NET框架在它的System.Globalization名字空间中提供了对全球化(globalization,指得是支持多种语言)的支持,这样你就可以在你的应用程序中实现多语种支持了。这个名字空间包括了若干类,用来处理许多重要的全球化问题,如文明识别字符串比较、日期和时间格式、数字格式和支持阳历和其它历法的日历。你首先需要知道的一个关键的类就是CultureInfo类。(译者注:这里的文明即culture,主要指得是语种,也包括记录时间日期的习惯等等)
CultureInfo类提供了文明参数选择的支持以及可以在每个线程(per-thread)基础上的控制。CurrentCulture合适的处数据和数字格式、字符串比较和大小写。CurrentUICulture属性由开发者来设置,CLR用它来为用户界面装载适当的资源。你可以用CultureInfo类来为当前线程设置CurrentCulture和CurrentUICulture,如下所示:
Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja")
Thread.CurrentThread.CurrentCulture = new CultureInfo("ja-JP")
还有一些API函数可以用CultureInfo类来控制输出:
Str = DateTime.Now.ToString(cultureInfo);
所有与文明有关的(culture-aware)类都是默认为文明敏感的(culture-sensitive),因此你只要简单的设置当前线程的文明就可以自动给System.Globalization名字空间中的类(如CompareInfo、StringInfo和Calendar)以及核心系统类(如Resources、DataTime和String)提供针对特定文明的支持。
为了可以支持更多的文明种数,你还需要在你的应用程序中全部使用符合统一字符编码标准的字符串(Unicode string)。尽管.NET框架提供了对Unicode字符串的完全支持,不过你仍需要在编写代码的时候意识到所有的字符串都写成Unicode格式。而且你还需要清楚许多依靠操作系统的操作(包括对文件系统的访问和某些控制)并不支持Unicode格式的字符串,因此你还必须在执行这些操作之前进行显式格式转换。
全球化将某些关键的数据以我们熟悉的国际通用(international)格式保存,但是如果你希望让你的用户得到专门为他们的文明而开发的应用程序,你就需要本地化你的应用程序。本地化包括了为特定文明创建特定资源然后再写你的应用程序,这样它针对程序所设定或者检测出来的某种文明而装载合适的资源。让我们详细看看资源模型。