Click here to Skip to main content
Click here to Skip to main content

Localizing ASP.NET MVC

, 7 Sep 2009 CPOL
Rate this:
Please Sign up or sign in to vote.
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, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Farooq Kaiser
Software Developer (Senior) http://www.Fairnet.com
Canada Canada
12+ years of complete software development life cycle experience for web based applications and multi-tier client-server desktop, primarily using LINQ, WCF, WWF, C#, ASP.NET, XML, XSLT, AJAX, Winforms,Visual Basic, JavaScript, JQuery, Google APIs, C++, VB.NET, C, ATL/COM, Open XML. Extensively involved in the requirement analysis, feasibility study, conceptualization, planning, architecture/design, configuration, development, quality assurance, implementation and release of the software products.

Comments and Discussions

 
Generalengrossing PinmemberNuri YILMAZ22-Dec-10 1:55 
GeneralMy vote of 1 PinmemberAndrei Rinea14-Sep-09 22:24 
GeneralMy vote of 2 Pinmembertec-goblin14-Sep-09 22:21 
GeneralMy vote of 1 PinmemberMakassi14-Sep-09 10:49 
Too short and too simple.
GeneralMy vote of 2 Pinmembertretyak8-Sep-09 11:09 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web03 | 2.8.141015.1 | Last Updated 7 Sep 2009
Article Copyright 2009 by Farooq Kaiser
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid