Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Localizing ASP.NET MVC

0.00/5 (No votes)
7 Sep 2009 1  
I will examine how to localize ASP.NET MVC application using existing .NET Framework

Introduction

Localization is the process of customizing your application for a given culture and locale. The .NET framework offers the following namespaces and classes to facilitate the localization.

  1. System.Globalization (The System.Globalization namespace contains classes that define culture-related information, including the language, the country/region, the calendars in use, the format patterns for dates, currency, and numbers, and the sort order for strings)
  2. CutureInfo provides information about a specific culture.
  3. The System.Resources namespace provides classes and interfaces that allow developers to create, store, and manage various culture-specific resources used in an application.

In this article, I will examine how to localize ASP.NET MVC application using existing .NET Framework. To create a new MVC project, see ASP.NET MVC application structure. Now, I will create a App_GlobalResources folder that will have the application resource files. To create a resource file in App_GlobalResources folder, follow these steps:

  1. Right-click your project –> Add –> Add ASP.NET Folder –> App_GlobalResources
  2. Right-click App_GlobalResources –> Add –> New Item –> Resources file

I will create two resource files English and French respectively. Now, I will change the "Access Modifier" settings to "Public" as shown below:

localize1.jpg - Click to enlarge image

Using the Code

Now I can access the resource setting in a strongly typed way as shown below in my view:

The easiest way to determine the visitor's preferred culture is to add culture="auto" and uiCulture="auto" in web.config as shown below:

<system.web>
<globalization culture="auto" uiCulture="auto"/>

However, this approach will not work when rendering a view using a different view engine or if the client setting is invalid. So I will assign the given culture in a global.asax as shown below:

 protected void Application_BeginRequest(object sender, EventArgs e)
 {
     CultureInfo culture = new CultureInfo("fr-CA");
     Thread.CurrentThread.CurrentCulture = culture;
     Thread.CurrentThread.CurrentUICulture = culture;
 }

This will make sure that the current thread will apply the given culture. Now I will run the project and it will render a view as shown below:

local3.jpg

Summary

In this article, we examined how to localize ASP.NET MVC applications using existing .NET Framework.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here