`
lovnet
  • 浏览: 6966153 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

基于语言文件的asp.net全球化解决方案

阅读更多

方案描述
本方案采用一种语言一个资源文件的方法,能够有效提高资源文件的可维护性。而VS.NET提供的一个WebForm一个资源文件的方案,无法满足统一维护的需要。

实现步骤
1. 准备资源文件
资源文件通常有.resx和.resources两种,前者是xml文件,后者是二进制文件。本方案中采用.resources作为资源文件,因此需要一个第三方提供的资源编辑器对资源文件进行编辑,我使用的是Resourcer,反正只要能编辑资源文件并且保存为.resources文件的软件都可以。在资源文件中添加一些string资源,通常情况下,只会用到string资源,有些项目可能需要全球化的图片资源,原理里一样的,本文就不涉及了。
资源文件的命名是有规定,该方案中,我把所有的资源文件名设为business.[culture].resources,其中business这个名字可以改,可以改成任何一个你喜欢的名字,[culture]部分必须使用.net允许的文化缩写,如zh-cn、ja-jp、en-us等。
2. 把资源文件放入项目
为了方便管理,我把所有的资源文件放在网站的一级目录Resources中。由于读取资源文件时要用到资源文件的物理位置,建议把Resources目录直接放在wwwroot下,否则会因为路径问题而变得很麻烦。
3. 增加默认语言设置
在web.config中加入<add key="cultureName" value="zh-cn" />,表明默认情况下使用zh-cn作为默认语言文化。
4. 通过Session设置当前语言
我们用一个Session变量——Session["cultureName"]来告诉每一个页面应该使用哪种语言进行初始化。当Session["cultureName"]==null时,表明该变量未设置过,就直接用默认语言文化,即web.config中的设置值。
如果用户想改变当前的界面语言,只需要设置Session["cultureName"]为指定的文化缩写即可。

全球化资源辅助管理类
通过这个类你不需要了解ResourceManager的使用方法,就可以完成全球化的初始化和资源读取工作。该类初始化时需要传入一个Page对象,该对象将用于获得Session变量值。一般情况下,大家只需要用该类的GetString()方法就可以了。

/**////<summary>
///全球化资源辅助管理类
///</summary>

publicclassResourceHelper
{
privateResourceManager_rm=null;
privatePage_page=null;

publicResourceHelper(Pagepage)
{
_page
=page;
PrepareResource();
}

/**////<summary>
///获得当前文化,从Session["cultureName"]取
///</summary>

protectedCultureInfoGetCurrentCulture
{
get
{
if(_page.Session["cultureName"]!=null)
returnCultureInfo.CreateSpecificCulture(_page.Session["cultureName"].ToString());
else//如果Session未设置,则直接从web.config中读取默认设置
returnCultureInfo.CreateSpecificCulture(System.Configuration.ConfigurationSettings.AppSettings["cultureName"]);
}

}

/**////<summary>
///初始化资源管理
///</summary>

publicvoidPrepareResource()
{
_rm
=ResourceManager.CreateFileBasedResourceManager("business",_page.Server.MapPath("resources")+System.IO.Path.DirectorySeparatorChar,null);
}

/**////<summary>
///获得资源指针
///</summary>

protectedResourceManagerresource
{
get
{
if(_rm==null)
PrepareResource();
return_rm;
}

}

/**////<summary>
///获得资源字符串
///</summary>
///<paramname="ResourceID">资源ID</param>
///<returns></returns>

publicstringGetString(stringResourceID)
{
returnthis.resource.GetString(ResourceID,this.GetCurrentCulture);
}

}

分享到:
评论

相关推荐

    ASP.NET多语言解决方案示例

    ASP.NET多语言解决方案示例是针对开发者设计的,旨在帮助他们构建支持多种语言的Web应用程序。这个示例项目展示了如何在.NET框架下,利用ASP.NET技术实现一个灵活且高效的多语言系统。对于初学者或者对多语言支持不...

    asp.net本地化实战解决方案及代码

    ASP.NET也提供了错误消息的本地化,通过自定义Errors资源文件,可以确保错误信息根据用户的语言偏好显示。 总结,ASP.NET本地化涉及资源文件的管理、配置文件的设置、页面指令的应用、代码中的资源调用以及URL和...

    ASP.NETMVC3全球化解决方案

    在这个“ASP.NET MVC3全球化解决方案”中,我们关注的是如何使应用程序支持多语言,即国际化和全球化。 国际化(Internationalization)是指设计和实现一个软件系统,使其能够适应不同的地区和文化环境,包括但不...

    基于ASP_NET实现全球化

    因为项目的关系,这两天一直在研究ASP.NET的全球化问题。我知道,在JAVA体系中有专门的I18N处理方案,.NET中不可能会没有。所以,到网上查了查资料,经过一番“苦斗”,略有小成。感觉网上目前还没有非常完整的解决...

    一个基于ASP.NET实现Web网页多语言展现的本地化处理程序例子

    基于给定的标题“一个基于ASP.NET实现Web网页多语言展现的本地化处理程序例子”,我们可以深入探讨如何在ASP.NET中使用本地化来实现多语言支持。 首先,ASP.NET的本地化是通过资源文件来实现的,这些文件存储了特定...

    asp.net多语言决方案-亲自使用测试

    在“asp.net多语言解决方案-亲自使用测试”这一主题中,我们将深入探讨如何利用ASP.NET实现多语言支持,即国际化和本地化功能。 国际化(Internationalization)是指设计和开发软件系统,使其能够适应不同国家和...

    Asp.net实现多语言Demo

    "App_GlobalResources"是Asp.NET中存储全球化资源的地方,每个语言都会有一个或多个`.resx`文件,比如`Resources.resx`(默认语言)和`Resources.zh-CN.resx`(简体中文)。这些文件包含键值对,键是引用的字符串ID...

    ASP.NET2.0支持多语言示例源码_dyy.zip

    总的来说,ASP.NET 2.0通过资源文件和文化设置提供了一套完整的多语言解决方案。通过理解和应用这些概念,开发者可以创建出具有高度可扩展性和适应性的多语言网站。这个示例源码应当包含了从创建资源文件到实现用户...

    ASP.NET Zero Core 11.1.0 SQL Server

    7. **本地化与国际化**:支持多语言,满足全球化需求。 8. **权限与角色管理**:强大的RBAC(Role-Based Access Control)机制,确保数据安全性。 对于SQL Server的支持,ASP.NET Zero Core 11.1.0提供了一套完整的...

    【ASP.NET编程知识】ASP.NET Core自定义本地化教程之从文本文件读取本地化字符串.docx

    这样,应用程序就能根据用户的语言环境,从文本文件中获取相应的本地化字符串,提供了更加灵活的本地化解决方案。 总结来说,ASP.NET Core的本地化机制允许开发者为不同语言和地区提供定制的内容。通过自定义本地化...

    ckfinder for asp.net

    总的来说,CKFinder for ASP.NET是一款强大而全面的文件管理解决方案,它利用Ajax技术提供流畅的用户体验,同时兼顾易用性和安全性。无论是在个人网站还是大型企业系统中,CKFinder都能发挥出色的作用,提升文件管理...

    C# ASP.NET 最佳的实现多语言网站的例子

    本项目"**C# ASP.NET 最佳的实现多语言网站的例子**"提供了一个高效的解决方案,它展示了如何在C# ASP.NET环境中优雅地处理多语言需求。这个例子不仅功能完备,而且代码简洁,为开发者提供了很好的起点。 首先,...

    基于ASP.NET的在线购物系统的设计与实现

    本文将详细介绍一个基于ASP.NET的在线购物系统的设计与实现过程,旨在提供一种解决方案,以满足个体用户和中小型企业的购物需求,提高购物体验的便捷性和效率。 首先,设计的目标是克服传统购物模式中的不便,如...

    asp.net在线考试系统论文及毕业设计_开题报告

    - **基本内容**:本系统是一个基于ASP.NET的在线考试平台,主要包括题库管理、用户管理和考试管理等功能模块。 - **体系结构**: - **用户管理模块**:包括用户注册、登录验证、权限分配等功能。 - **题库管理模块...

    ASP.NET 4.0专家技术手册

    10. **全球化与本地化**:ASP.NET 4.0提供了更强大的全球化支持,包括资源文件的管理和多语言切换,有助于创建全球化的Web应用。 11. **部署和服务器管理**:简化了IIS7的配置,提供了更灵活的应用程序池管理和配置...

    一个基于C#+ASP.NET实现的Localizable Currency TextBox货币本地化显示控件源码

    总的来说,这个源码包提供了一种解决方案,让开发者能够轻松地在ASP.NET应用中集成货币本地化的输入控件,提升用户体验。通过学习和理解这些代码,开发者可以掌握如何在C#和ASP.NET环境中创建自定义控件,以及如何...

    ASP.NET工程师培训5

    ASP.NET是微软公司推出的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了高效、易用且功能丰富的工具和环境。在这个“ASP.NET工程师培训5”中,我们可以期待学习到ASP.NET的核心技术和Web2.0...

    ASP.NET源码——Asp.net实现多语言Demo.zip

    这个源码Demo是关于ASP.NET如何实现多语言支持的一个实例,对于开发全球化和本地化的Web应用非常有帮助。 在ASP.NET中实现多语言功能,主要依赖于资源文件和 globalization 元素。资源文件通常是以.resx扩展名存储...

    基于ASP.net的多语种网络硬盘系统源码.zip

    1. **Web.config** - ASP.NET应用程序的主要配置文件,包含了应用程序的设置,如数据库连接字符串、安全性设置和 globalization(全球化)配置。 2. **Solution File (.sln)** - Visual Studio的解决方案文件,用于...

    asp.net开发技术大全_附带光盘

    ASP.NET是微软公司推出的一种基于.NET Framework的Web应用程序开发框架,它为开发人员提供了一种高效、安全且易于管理的方式来进行动态网站、Web应用程序和Web服务的开发。C#是ASP.NET的主要编程语言,它的简洁性和...

Global site tag (gtag.js) - Google Analytics