我一直在研究我的第一个MVC应用程序,我想将其本地化。我知道如何使用App_GlobalResources,但我更喜欢使用App_LocalResources。
在典型的WebForms应用程序中,您将App_LocalResources文件夹放在与ASPX文件相同的目录中......这在MVC中是相同的(IE:我将它们放在“views”目录中的相应子文件夹中)吗?
此外,在视图中访问App_GlobalResources时,您可以这样做<%=Html.Encode(Resources.Index.Title)%>
但是我无法使用App_LocalResources执行此操作。我不想让我<label runat="server"
来利用meta:resourcekey
修改
我发现了一种方法可以做到这一点,但我不确定这是否是最好的方法。这是想法
App_LocalResources
文件夹作为子文件夹放在各自的View文件夹中Index.resx
或About.resx
现在我可以使用类似的东西来引用本地资源
<%= MyProj.Views.Home.Index.Title%>
我看到的唯一问题是资源是嵌入的,我无法在不重新编译项目的情况下添加新的语言环境。
答案 0 :(得分:16)
您不应将App_GlobalResources或App_LocalResources与MVC一起使用。这是因为这些资源的运作方式。这些资源未嵌入到您的项目中,而是由ASP.NET运行时编译。这意味着当您不在ASP.NET运行时内运行时,您的资源将无法使用,这意味着如果您在其中使用资源,您将无法对视图和控制器进行单元测试。
This post提供了有关它的更多详细信息。
相反,您应该使用自己在问题中提到的方法。随意放置您的资源,并将其设置为“嵌入式资源”,自定义工具应为“PublicResXFileCodeGenerator”。
答案 1 :(得分:1)
我知道这并没有直接回答这个问题,但我认为你真正想要的是“如何使用ASP.NET MVC进行本地化”。
您可以查看此stackoverflow.com问题的答案,看看它们是否有助于解答您要解决的问题:how-to-localize-asp-net-mvc-application