ASP.NET MVC的本地化支持(一)
时间:2011-03-03 来源:心雨纷扬
搞这个东西我参照了网上的一个人写的一篇博客,不过由于他使用的模板还有mvc版本与我的不一致,所以以下内容结合了我实际操作中的问题。
本地化是我们在开发互联网Web应用的共同问题,是你的程序本地化的要点就是分离页面内容和逻辑实现,这个意味着,如果你想在页面显示某些内容 ,不要把它们直接放到页面上或者后台逻辑里。你应该给予这些内容一个可以链接到设置的语言恰当的内容(此处翻译不出来了)。接下来让我们开始实现本地化吧。
ASP.NET MVC的本地化支持
ASP.NET MVC的是基于ASP.NET运行,所以由ASP.NET提供的所有功能,都可以在MVC里使用,例如缓存,会话状态和本地化。 在传统的ASP.NET Web窗体时代我们使用资源文件存储不同语言中的内容和使用由Visual Studio自动生成的ResourceManager类来检索它们。在ASP.NET MVC他们一样有效的。
让我创建一个标准的ASP.NET MVC的一个示例应用程序。该网站是中文的,我们可以看到所有的内容都是在视图和控制器类里写死的。
我使用的框架是mvc3的基于Razor模板的网站。
使用Visual Studio 2010 创建 MVC3的Web应用程序,在随后出现的选择中选择Internet 应用程序,视图引擎为Razor;
可以看出来现在网站是中文的,而且我们可以看到所有的内容在视图和控制器里都是硬编码的。
现在我需要做的是把所有的内容从页面和控制器里分离出来,Asp.Net给我们一个名为App_GlobalResources的文件,它里面包含各种语言的全局资源文件。我们只需要在解决方案管理器里的Web项目上右击鼠标,添加->添加至Asp.Net文件夹->App_GlobalResources
我创建了中文、英文两个语言的资源文件,中文是程序的默认语言,所以我先创建Global.resx文件,然后是Global.en.resx,中间的“en”是英语的Culture Name。如果你需要法语,那么你只需要再创建Global.fr.resx文件,Visual Studio会自动生成对应的类。
现在让我在资源文件里添加一些内容,在主页上我们需要替换三处:标题、消息还有描述,所以我们在这两个资源文件里添加3个项。
标题和描述都在视图页面里定义了,所以我将更改视图。
@{ ViewBag.Title = Resources.Global.Home_Index_Title; } @ViewBag.Message
@Resources.Global.Home_Index_Desc http://asp.net/mvc。
1: public ActionResult Index()
2: {
3: ViewBag.Message = Resources.Global.Home_Index_Message;
4: return View();
5: }
夜深了,去睡觉了,下面的下次再写啦