ASP.NET - MVC 3: 本地化

36

我即将为我的MVC3 Web 应用程序实现本地化。在搜索了大量的实现方法之后,我仍然不确定该采用哪种方式。我找到了几种方法:

第一种方法是使用App_GlobalResources和ViewData以及Map Routing选择文化。 (链接)

第二种方法是在我的项目中创建一个单独的Resource文件夹,并像Model和View文件夹一样对其进行结构安排。然后在这些文件夹中创建资源文件。要使用这些资源字符串就像使用Viewbag一样。然后编辑Global.asax以处理文化变化并创建一个部分视图以允许更改文化。这些说明非常详细,所以这可能是最好的选择。 (链接)

第三种方法是使用DisplayAttribute和resx文件。这个有点模糊,我找不到足够的信息来了解它的实际实现和限制。(链接

第四种方法是创建一个自定义类来处理资源。这似乎非常花哨而且容易实现和使用,但是我没有找到真正的信息来确认它是否有效。(链接

然后我找到了一篇警告不要使用App_GlobalResouces和App_LocalResources的文章。(链接

在经过可能的本地化方法后,我没有找到一种被普遍认可或接受的方式。这让我思考,哪种方法是在ASP.NET MVC3中实现本地化的最佳方式?


有一篇由Scott Hanselman撰写的博客文章详细介绍了本地化:http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx 希望你会觉得它很有用。 - Erik Schierboom
你能接受一个答案或者用你选择的方法回答问题吗? - Tjaart
2个回答

6
我想到了一种更容易处理本地化的方法,您不需要使用资源文件或属性。它涉及使用自定义元数据提供程序。
MVC3使用元数据提供程序来获取所有文本字符串。我的方法允许您使用字符串表、数据库、平面文件或任何其他来源来提供翻译。您所需要做的就是继承两个接口。
请在此处阅读更多:http://blog.gauffin.org/2011/09/easy-model-and-validation-localization-in-asp-net-mvc3/ 编辑 现在,所有内容都已在GitHub上记录,并有NuGet包可用:https://github.com/jgauffin/griffin.mvccontrib

我目前正在尝试您的解决方案,到目前为止我很喜欢它,但是使用资源文件方法是否可以进行视图翻译呢?您在CodeProject上的教程只展示了SQL的方法。 - Esa
1
如果您能在此处记录您博客文章的要点,那就太好了。有一天它可能无法访问,而且您现在应该已经知道为什么我们不喜欢只提供链接的答案了。谢谢。 - Kev
1
@jgauffin 感谢您的项目...有没有保持维护的方法?例如:http://griffinframework.net/docs/mvccontrib/不再可用。此外,在安装管理nuget包后,我无法找到任何地方访问您的项目的管理员侧的URL。 - Cristian Boariu
我已经把所有东西都迁移到Azure了,但某些网站还没有正确地迁移。该项目并没有死亡。我正在研究一种替代的本地化技术,并将在我的本地化书完成后尽快发布。 - jgauffin
@CristianBoariu:我今天会把它恢复。 - jgauffin
显示剩余3条评论

6

然后我发现一篇警告关于使用App_GlobalResouces和App_LocalResources的文章。(链接)

我觉得那篇文章非常有用。那里解释的方法非常干净。这是一个使用那种方法新创建的索引视图的片段:

@using Resources.Index
@{
    ViewBag.Title = "Index";
}

<h1>@Index.Title</h1>

我认为没有一种绝对的“这样做或者否则”的方法,因此选择最干净的方法似乎是一个不错的选择。


2
我自己也使用了这个。它很容易实现,不需要任何Javascript。 - Esa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接