摘要:本文将通过一个实际案例来详细剖析如何实现一个ASP.NET 2.0网站开发过程中的全球化与本地化问题。
一、简介
全球化和本地化是每一位开发者在创建全球化产品或应用程序时必须清楚的两个重要的慨念。尽管有许多文章对这个题目作过较好的解释,但是我一直没有看到一篇全面而综合地讨论关于全球化/本地化的所有重要概念的文章。本文旨在通过一个具体案例来详细分析使用ASP.NET2.0开发一个web应用程序时所涉及到的全球化问题。
二、背景理论
全球化是应用程序开发中某一阶段的任务,其目的是使程序能够跨多个文化地区可用而不必顾及语言和地区性差别。例如,你在开发一个小型库存管理程序,而你生活在例如英格兰这样一个以英语为主要语言的地区。现在,如果你想把你的程序卖到另一个不同国家,比方说是德国,那么你需要确保你的程序以德语显示并实现输入。
本地化是使用一种地区特定的文化和语言来创建内容、输入和输出数据的过程。文化将会影响日期显示设置(如是mm/dd/yyyy还是dd/mm/yyyy),货币显示格式等。现在,确保我们的程序能够被本地化的过程称为国际化或全球化。用更简单的术语来说,全球化能够被定义为一组活动,通过这一活动,可以确保我们的程序能够运行在使用不同语言和文化的地区。
因此,全球化是与内在代码的改变相关联的以便支持这样的改变,如使用资源文件等;而本地化是使用一种特定的文化和地区性信息的过程,以便该程序能够使用本地的语言和文化。这意味着要把字符串翻译成一个特定的本地的语言;为此,要把语言特定的字符串放到资源文件中。一般地,应该从主构建和代码开发阶段就开始考虑全球化问题,而本地化通常在以后才实现。
三、 实现ASP.NET 2.0网站的全球化
让我们从一个简单的示例开始。为了解释本地化并使事情尽可能简单,我使用ASP.NET和C#创建了一个称为TestSite的新网站(详见本文下载的源码);我添加了一个MasterPage和一个缺省页面。这个缺省页面中含有一个TextBox和一个Calendar控件;该TextBox控件有一个描述货币的双精度型实数。在本例中,我们会看到随着用户选择不同的语言货币格式发生相应的变化。当我运行该应用程序时,此缺省页面看起来如下所示:
我已经出版了这个测试web应用程序,你可以在下列URL处看到它的功能版本:http://63.134.215.124/testsite/default.aspx
四、 文化和本地化
首先,让我先解释一下文化和本地化。
一般地,语言也依赖于地理位置。例如,法语既是法国人的语言也是加拿大人的语言(除此之外,还有其它许多国家也说法语)。但是从语言角度来讲,加拿大法语不同于法国法语。同样,在美国英语和英国英语之间也存在一定的区别。因此,语言常常需要与说该语言的特定地区相联系,并且这是通过使用本地化(语言+地理位置)实现的。
例如,fr是法语语言的代码,而fr-FR意味着法国使用的法语。因此,fr仅指定了这种语言,而fr-FR才实现了本地化。同样,fr-CA定义另一个代表加拿大法语和文化的本地化。如果我们仅仅使用fr,那么它仅代表是一种中立性质的文化(也即是,地区中立)。