Understanding Globalization and Localization in .NET

21 06 2008

Understanding Globalization and Localization in .NET

Now days as the audience for web applications has bursted from computers to pda’s, cell phones and many other gadgets, Globalization has become must for web application. Globalization allows your web application to be useful for different people in different parts of the world who speaks different languages.

Thanks to Microsoft .Net Globalization feature.

Using this feature one can easily build a web application available to dispersed audience throughout the world.

In this article I will walkthrough the steps that are essential for creating a multi cultured application. This example will include the use of Global and Local resource files that are heart for multi cultured web application.

ASP.Net supports two types of resources

Local Resource and Global Resource.

Both types of Resources are xml based resource files that can contain text translated into particular language

Local Resources:

Local resource is specific to particular webpage. All the resource files related to particular webpage must be placed in a special .Net folder named App_LocalResources. This folder must be in the same folder of the webpage that you want to localize. So App_LocalResources can be subfolder for any folder of your website.

Global Resources:

They are the resource files for the entire web application. They are not specific to any page. They can be accessed from the entire web application. Global resource files must be located in a special .Net folder named App_GlobalResources. App_GlobalResources must be at the root of the web application.

Steps to create local Resource file.

1) Switch to design view of the webpage for which you want to create the resource file.

2) Go to Tools menu and click Generate Local Resource.

3) As the result of step 2 .Net generates the .resx file.

Naming conventions that Resource files follow is as explained below:

<PageName>.aspx.<language>.resx

Example

myWebPage.aspx.resx: This is the default resource file of your page. If no culture matches than this resource file is used.

myWebPage.aspx.es.resx: For Neutral Spanish culture it may look like this.

myWebPage.aspx.es-MX.resx: For Specific Spanish Mexican culture it may look like this.

What do you mean by neutral and specific cultures? I leave this small exercise to readers.

Steps to create global Resource file.

1) Their are no specific utilities in .Net to generate Global resource files automatically. But you can create App_GlobalResources folder at root level and add a resource file manually Or you may copy the local resource file and change it at your will.

Ways in which you can Globalize or localize your application.

 
Implicit Localization


<asp:Label ID="lblLoadLocalResource" runat="server" 

Text="Local Resource" 

meta:resourcekey="lblLoadLocalResourceResource1">

</asp:Label>

 

Implicit Globalization


<asp:Label ID="lblLoadGlobalResource" runat="server" 

Text="<%$ Resources:Resource, commonHeader %>" 

ToolTip="<%$ Resources:Resource, commonHeader %>">

</asp:Label>

 

Programmatic Localization


lblLoadLocalResource.Text = GetLocalResourceObject
("lblLoadLocalResourceResource1.Text").ToString();

lblLoadLocalResource.ToolTip = GetLocalResourceObject
("lblLoadLocalResourceResource1.ToolTip").ToString();

 

Programmatic Globalization


lblLoadGlobalResource.Text = GetGlobalResourceObject
("Resource", "commonHeader").ToString();

lblLoadGlobalResource.ToolTip = GetGlobalResourceObject
("Resource", "commonHeader").ToString();

 

 

How to change the UI Culture?

Steps to check and configure the UI Culture of your webpage

1) To change it programmatically you need to override the InitializeCulture() of your web page.

protected override void InitializeCulture()
{
 UICulture = "en";
}

 

2) To change it implicitly from .aspx page Set

<%@ Page Language="C#" UICulture="en" %>

3)To change it globally from web.config file

<system.web>
 <globalization uiCulture="es"/>
</system.web>

Note: If you set UICulture=”auto” then .Net runtime will automatically detect the requesting browsers preferred language setting and will compile the related resource file for that culture. In this case you do not have to write a single piece of code for setting UICulture.

How to check this?

1) Open IE and go to Tools > internet Options

2) Click Languages tab.

3) This will open language Preference dialog box window.

4) Add the language by clicking the add button. Make sure to add the language for which you have configured the resource file of your web page.

5) Select the language that you have added and using Move Up button, bring it to the first topmost position in the language list.

6) Press Ok and again Ok to return.

Open your webpage in the browser and enjoy the taste of globalized web application.

I believe that few lines of code can speak thousand words and so I have prepared a small demo that includes both Globalization and Localization.

To download the entire source code Click Here.

Note: Globalizing the web application entirely, requires lots of other things like changing the Culture, formatting dates and currency and lot more. I will try to incorporate all this stuff in my next article.

Advertisements

Actions

Information

9 responses

12 02 2009
ahuu

great article, it took me a while to find out a thorough explanation of globalization and localization.

thanks

2 04 2009
Maheshchoudhary

Hi Sir,

very Stright Forward Expalnation.

pls Let me know when will U provide ur Next Article.

Thanks

14 04 2009
Dhaval Upadhyaya

Hi, I am little bit busy with my research on Flex with .Net. If you have any queries than you can let me know. I will be glad to solve it for you. Thanks for your comment.

14 04 2009
imran

Can you please provide a sample project to build multilingual application.

27 07 2011
Mohd Abdul Kareem

Very good article, i am searching this kind of explanation since long time. Very Nice.

6 03 2014
Thiriveni

Great job. Its very easy to understand.. you are the man..

2 10 2014
Anand

Good work!! Liked the way you explained differences.

14 12 2014
smita

Very helpful post.. thanks

27 03 2015
slimen wijdene

Great job ,thanks

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: