翻译自:http://blog.eworldui.net/post/2008/05/ASPNET-MVC---Localization.aspx
 
     你本地化你的应用程序了吗?当然,我敢打赌我们至少做到保存字条串资源到资源文件里面,以便以后本地化.但这并不意味着我们正在开发一个大的应用需要本地化成很多语言,所以我们不必考虑这个.本地化在asp.net 1.0/1.1中可以做到.不过asp.net  2.0引入了新的表达式语法,使本地化的容易得多,只需写下面的代码
  

 

下一步,把视图也改成使用新的资源扩展方法,下面是Create视图.

这是Confirm视图:
%>
你可以看到,我使用了两种混合的资源.如下:

就象你看到的,它同时支持Global Resources和 Local Resources. 做Controller action的时候,只有Global Resources(全局资源)起作用,没有local resource(本地资源的概念,Html.Resource的实现实际上是对先前我说的复杂方法的一个封装.不过它考虑到了它考虑到在表达式的语法和语境下,聪明的获取正确的资源.不过缺点是代码正适合WebFormViewEngine 获取不确定本地资源.原因是需要找到当前呈现视图引擎关联的虚拟路径.如果你使用其它的视图引擎,修改下面的视图路径.

     压缩代码下载



PS:翻译处女作,如有错误,多多指证:
<asp:Label Text="<%$ Resources:Strings, MyGlobalResource %>" runat="server" />
<asp:Label Text="<%$Resources:MyLocalResource %>" runat="server" />



     当然,你可能经常使用更具体的方式,调用httpContext获到本地和全球的资源.不过我觉得上面的表达式的方式相对更好一些,因为当前的视图或者页面的上下文已经在代码中默认了,不用显示的获取.不过,你还是可以把上面例子下面下面这种方式:
 

<%=HttpContext.Current.GetGlobalResourceString("Strings""MyGlobalResources",CultureInfo.CurrentUICulture) %>
<%= HttpContext.Current.GetLocalResourceString("~/views/products/create.aspx","MyLocalResource", CultureInfo.CurrentUICulture) %>

    好的,现在都配置好了.让我们把代码转换成使用资源.您会看到我在Controller和View使用的一个新的扩展方法(如下):

相关文章: