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,如需转载请自行联系原作者

相关文章
|
2月前
|
开发框架 前端开发 .NET
一个适用于 .NET 的开源整洁架构项目模板
一个适用于 .NET 的开源整洁架构项目模板
69 26
|
15天前
|
传感器 人工智能 机器人
D1net阅闻|OpenAI机器人项目招新 或自研传感器
D1net阅闻|OpenAI机器人项目招新 或自研传感器
|
2月前
|
开发框架 安全 .NET
【Azure Developer】.NET Aspire 项目本地调试遇 Grpc.Core.RpcException 异常( Error starting gRPC call ... )
Error starting gRPC call. HttpRequestException: The SSL connection could not be established, see inner exception. AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot
67 12
|
4月前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
190 3
|
5月前
|
开发框架 前端开发 API
C#/.NET/.NET Core优秀项目和框架2024年9月简报
C#/.NET/.NET Core优秀项目和框架2024年9月简报
110 1
|
6月前
|
开发框架 .NET C#
VSCode开发.net项目时调试无效
【9月更文挑战第22天】在使用 VSCode 开发 .NET 项目时遇到调试问题,可从项目配置、调试配置、调试器安装、运行环境、日志和错误信息等方面排查。确认项目类型及文件配置,检查 `launch.json` 文件及配置项,确保调试器扩展已安装并启用,验证 .NET 运行时版本和环境变量,查看 VSCode 输出窗口和项目日志文件,检查权限及代码错误。若问题仍未解决,可查阅官方文档或社区论坛。
160 4
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
5月前
|
存储 消息中间件 前端开发
.NET常见的几种项目架构模式,你知道几种?
.NET常见的几种项目架构模式,你知道几种?
162 0
|
5月前
|
边缘计算 开发框架 人工智能
C#/.NET/.NET Core优秀项目和框架2024年8月简报
C#/.NET/.NET Core优秀项目和框架2024年8月简报
111 0
|
5月前
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始