开发者

ASP.NET - MVC 3: Localization

开发者 https://www.devze.com 2023-03-11 04:30 出处:网络
I am about to implement localization for 开发者_运维知识库my MVC3 web application. Googling my way through large amounts of ways to do it, I was left unsure which way to implement this. I found few wa

I am about to implement localization for 开发者_运维知识库my MVC3 web application. Googling my way through large amounts of ways to do it, I was left unsure which way to implement this. I found few ways how to do it:

First option I found was to use App_GlobalResources and ViewData and culture select with Map Routing. (Link)

Second was to make a separate Resources folder in my project and structure it like Model and View folders. Then create the resource files in those folders. To use those resource strings would be like using the Viewbag. Then edit the Global.asax to handle culture changing and create a partial view to allow changing cultures. The instructions to do this are very thorough so this might be the best bet. (Link)

Third was to use DisplayAttribute and resx-files. This one was a bit hazy, I could not find the sort of information so that I could grasp how this actually is implemented and its restrictions. (Link)

Fourth was to create a custom class to handle resources. This seemed pretty fancy and easy to implement and use but no real information was found if it actually worked. (Link)

Then I found a post that warned about using the App_GlobalResouces and App_LocalResources. (Link)

After going through possible ways of doing localization. I could not find a way which was universally approved or accepted. This left me pondering, which of these, or some I didn't find, would be the best way to implement localization in ASP.NET MVC3?


Then I found a post that warned about using the App_GlobalResouces and App_LocalResources. (Link)

I found that post extremely useful. The method explained there is very clean. Here is a snippet of my newly created index view using that method:

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

<h1>@Index.Title</h1>

I don't think there is a definitive do-it-this-way-or-else method, so going for the cleanest method seems to me like a good deal.


I've come up with an easier way to handle localization where you don't have to use resource files or attributes. It involves custom metadata providers.

MVC3 uses metadata providers to get all text strings. My approach allows you to either use string tables, a database, flat files or any other source to provide the translations. All you need to do is to inherit two interfaces.

Read about it here: http://blog.gauffin.org/2011/09/easy-model-and-validation-localization-in-asp-net-mvc3/

Edit

Everything is now documented at github and there are nuget packages: https://github.com/jgauffin/griffin.mvccontrib

0

精彩评论

暂无评论...
验证码 换一张
取 消