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

相关文章
|
1月前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
2月前
|
开发框架 前端开发 API
C#/.NET/.NET Core优秀项目和框架2024年9月简报
C#/.NET/.NET Core优秀项目和框架2024年9月简报
|
3月前
|
开发框架 .NET C#
VSCode开发.net项目时调试无效
【9月更文挑战第22天】在使用 VSCode 开发 .NET 项目时遇到调试问题,可从项目配置、调试配置、调试器安装、运行环境、日志和错误信息等方面排查。确认项目类型及文件配置,检查 `launch.json` 文件及配置项,确保调试器扩展已安装并启用,验证 .NET 运行时版本和环境变量,查看 VSCode 输出窗口和项目日志文件,检查权限及代码错误。若问题仍未解决,可查阅官方文档或社区论坛。
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控件,该如何解决?
|
2月前
|
存储 消息中间件 前端开发
.NET常见的几种项目架构模式,你知道几种?
.NET常见的几种项目架构模式,你知道几种?
103 0
|
2月前
|
边缘计算 开发框架 人工智能
C#/.NET/.NET Core优秀项目和框架2024年8月简报
C#/.NET/.NET Core优秀项目和框架2024年8月简报
|
2月前
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始
|
4月前
|
jenkins 测试技术 持续交付
解锁.NET项目高效秘籍:从理论迷雾到实践巅峰,持续集成与自动化测试如何悄然改变游戏规则?
【8月更文挑战第28天】在软件开发领域,持续集成(CI)与自动化测试已成为提升效率和质量的关键工具。尤其在.NET项目中,二者的结合能显著提高开发速度并保证软件稳定性。本文将从理论到实践,详细介绍CI与自动化测试的重要性,并以ASP.NET Core Web API项目为例,演示如何使用Jenkins和NUnit实现自动化构建与测试。每次代码提交后,Jenkins自动触发构建流程,通过编译和运行NUnit测试确保代码质量。这种方式不仅节省了时间,还能快速发现并解决问题,推动.NET项目开发迈向更高水平。
54 8
|
4月前
|
架构师 开发者
【悬念揭秘】DDD:那片隐藏在软件深处的业务乐土——.NET项目如何借力领域驱动设计,让复杂业务逻辑迎刃而解?
【8月更文挑战第28天】领域驱动设计(DDD)在.NET项目中的应用聚焦于将业务领域知识与软件开发紧密结合,通过构建清晰的领域模型管理复杂业务逻辑。DDD的核心概念包括限界上下文、聚合、实体等,确保模型与实现的统一。在.NET中,通过CQRS和事件源等模式提高系统响应性和可扩展性,实现业务事件驱动的解耦与协作。DDD不仅是一种设计方法,更是要求开发者深入理解业务的文化,助力.NET项目应对复杂挑战,实现业务与技术的融合。
69 6
|
4月前
|
设计模式 存储 前端开发
揭秘.NET架构设计模式:如何构建坚不可摧的系统?掌握这些,让你的项目无懈可击!
【8月更文挑战第28天】在软件开发中,设计模式是解决常见问题的经典方案,助力构建可维护、可扩展的系统。本文探讨了.NET中三种关键架构设计模式:MVC、依赖注入与仓储模式,并提供了示例代码。MVC通过模型、视图和控制器分离关注点;依赖注入则通过外部管理组件依赖提升复用性和可测性;仓储模式则统一数据访问接口,分离数据逻辑与业务逻辑。掌握这些模式有助于开发者优化系统架构,提升软件质量。
62 5