ASP.NET设计国际电子商务项目中的本地化支持

简介:
在之前的文章中,我已经讨论过如何进行多语言的处理,但是最近发现,本地化支持中,多语言也只能算做其中一部分,还有其它一些同样重要的内容需要考虑,比如日期格式和数字格式。其实这部分都是出现在表现层的,不影响数据库里的存储,也不影响实际业务的操作,但是如果处理不当,却会引起非常大的麻烦,比如日期格式,中国和印尼的样式就是不一样的,“月”和“日”所处的位置不一样,如果只按中国的格式来发布,会在当地造成误解,甚至误操作;对于数字格式,更是需要注意,在中国,用“.”表示小数点儿,而“,”表示千分符,这个表示方法,在印尼正是反着的,所以这个有可能会造成更大的误会,在电子商务中,大部分内容都是在和时间和金钱打交道,所以很有必要提前考虑这些事情。
    在本地化支持中的多语言部分,在本文不再讨论,只来说明一下上述的显示格式问题。在本地化支持中,有一个很重要的类就是Culture,通过对这个类的使用,可以控制上述日期及数字的格式。在页面中,需要处理的控件有多种多样,比如Label,GridView等,在格式处理方面,与多语言部分不同,不能把控件中的内容取出来后再做处理,因为反取出来的时候,已经全部变成了字符串型,不能正常的还原为原来的格式,为此,需要在其它地方处理。
    上面说了半天,那么如何知道要按哪种环境来处理呢?有些网站的做法是根据当前IE来判断当前的环境,但是这种做法有时会带来不方便,所以我的做法是把系统支持的语言全部列出来,供用户选择。
    在系统中,语言表存储以下几个主要字段:
         LANG_CODE
    语言代码
         LANG_NAME
    语言名称
         CULTURE
    该语言所对应的本地化信息,比如:
    LANG_CODE=CN LANG_NAME=中国 CULTURE=zh-CN
     在使用的时候,先要修改的页面就是登录页面,在登录页面上,需要增加一个语言列表的下拉框,这个下拉框中的内容来源于以上的语言表,当登录成功后,需要把该语言所对应的culture同时记录在Session中,如下例:
    Session["CULTURE"] = culture值;
    当Session中有值后,其它页面就可以直接引用这个值了。下面就来看一下如何使用这个值。在我得到正确的解决方案之前,我试验了很多的方式来实现这个本地化功能,最后发现,原来走的很多都是弯路,只需要几句简单的处理就可以搞定一切,我们要做的就是在指定的页面做一个重载,代码如下:
protected override void InitializeCulture()
{
string s = Request["CULTURE"];
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(s);
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(s);
base.InitializeCulture();
}
    经过上面的重载,该页面上所有的输出,都会自动转换成指定的本地化格式了,甚至包括GridView,不用做任何处理,就可以了。

    总之一句话,有简单的方式一定要用,不要绕不必要的弯路。


本文转自Aicken(李鸣)博客园博客,原文链接:http://www.cnblogs.com/isline/archive/2010/04/06/1705285.html,如需转载请自行联系原作者

相关文章
|
6月前
|
SQL 开发框架 .NET
分享111个ASP电子商务源码,总有一款适合您
分享111个ASP电子商务源码,总有一款适合您
75 5
|
6月前
|
开发框架 .NET Python
分享79个ASP电子商务源码,总有一款适合您
分享79个ASP电子商务源码,总有一款适合您
52 3
|
6月前
|
存储 开发框架 NoSQL
ASP.NET WEB——项目中Cookie与Session的用法
ASP.NET WEB——项目中Cookie与Session的用法
88 0
|
6月前
|
开发框架 前端开发 .NET
ASP.NET WEB——项目创建与文件上传操作
ASP.NET WEB——项目创建与文件上传操作
86 0
|
3月前
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
|
3月前
|
缓存 开发框架 .NET
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
|
3月前
|
Linux C# C++
【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
|
3月前
|
开发框架 .NET API
如何在 ASP.NET Core Web Api 项目中应用 NLog 写日志?
如何在 ASP.NET Core Web Api 项目中应用 NLog 写日志?
147 0
|
3月前
|
存储 缓存 开发框架
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
|
5月前
|
Linux C# C++
【.NET Developer】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
本文介绍了如何使用VS2019和.NET框架创建一个Blazor应用,并将其部署到Azure应用服务。首先,Blazor是一个使用C#而非JavaScript构建交互式Web UI的框架,支持共享服务器和客户端应用逻辑,以及与Docker和Azure集成。任务包括创建Blazor项目,配置Dockerfile为Linux容器,本地测试,发布到Azure Container Registry (ACR),然后在Azure App Service for Container上部署。在部署过程中,需确保Docker设置正确,开启ACR的Admin访问权限,并监控镜像拉取和容器启动日志。
211 0