ASP.NET - MVC 3:本地化

Esa*_*Esa 36 globalization localization internationalization asp.net-mvc-3

我即将为我的MVC3 Web应用程序实现本地化.通过大量的方式搜索我的方式,我不确定实现这个的方式.我发现如何做到这一点:

我找到的第一个选项是使用App_GlobalResources和ViewData以及使用Map Routing进行文化选择.(链接)

其次是在我的项目中创建一个单独的Resources文件夹,并将其构建为Model和View文件夹.然后在这些文件夹中创建资源文件.使用这些资源字符串就像使用Viewbag一样.然后编辑Global.asax以处理文化变化并创建部分视图以允许更改文化.执行此操作的说明非常彻底,因此这可能是最好的选择.(链接)

第三是使用DisplayAttribute和resx文件.这个有点朦胧,我找不到那种信息,这样我才能理解这实际是如何实现的以及它的限制.(链接)

第四是创建一个自定义类来处理资源.这看起来非常花哨,易于实现和使用,但如果它确实有效,则没有找到真正的信息.(链接)

然后我发现了一条警告使用App_GlobalResouces和App_LocalResources的帖子.(链接)

在经历了可能的本地化方式之后.我找不到一种得到普遍认可或接受的方式.这让我思考,其中哪些,或者一些我没有找到,将是在ASP.NET MVC3中实现本地化的最佳方式?

Tja*_*art 6

然后我发现了一条警告使用App_GlobalResouces和App_LocalResources的帖子.(链接)

我发现帖子非常有用.解释的方法很干净.以下是使用该方法创建的索引视图的片段:

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

<h1>@Index.Title</h1>
Run Code Online (Sandbox Code Playgroud)

我不认为有一种明确的做法 - 这种方式或其他方法,所以选择最干净的方法对我来说似乎很划算.

  • 我自己也用过这个.它很容易实现,不需要任何JavaScript. (2认同)

jga*_*fin 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