ASP.NET - MVC 3: Localization

Esa picture Esa · Jun 7, 2011 · Viewed 16.2k times · Source

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?

Answer

Tjaart picture Tjaart · Jun 15, 2011

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.