Skip to main content

Globalization and Localization with ASP.NET



Configuring Globalization and Localization

ASP.Net provides infrastructure to automatically adjust the appearance and formatting based on the client’s browser’s culture settings.

Using Resource Files:
          Visual studio automatically generates the XML resource file for the controls on the page that can even used by non-technical people to create other versions in different languages.

There are two types of resource files global and local.

Local Resources:
Local resources are specific to pages stored in App_LocalResources folder in that same folder of page.
Local resource file names are named as <PageNumber>[.languages].resx

The Term Culture refers to regional difference in dates, currency. It’s automatically handled by ASP.NET.

<PageName>.resx: Default to use when no other resource file available.
<PageName>.de.resx: German.
<PageName>.es.resx: Spanish.
<PageName>.es-mx.resx: Spanish (Mexico).

To Generate Local Resource Right Click Page select Generate Local Resource. OR
From Tools | Generate Local Resource.

It also includes meta:resourcekey attribute to all server controls.

Regenerate the resource file after adding new controls. It will update the default <PageName>.resx file. You have to manually update the other culture files.

To test other resource file in IE:
Select Internet Options à Select Languages à in Language Preferences dialog Click Add and Select the Language à OK à Move Up the specific Language à OK.

Global Resources:
They can be read from any where. Placed in App_GlobalResources folder at root.

Binding of controls with Local Resources is Implicit Localization.
To bind control to a Global Resource is Explicit Localization.
To add a Global Resource simply add the App_BlobalResource folder and add the respective resource file.

Binding control properties to Global Resources:

Select control, select properties, select Expression, select a Bindable property.

Select Expression Type as Resources.
Provide ClassKey that is resource file name without extension.
Provide ResourceKey that is Resource Key name.

It adds the following script to resource file:
Text = “<%$ Resources: CompanyGlobalInfo, SloganText %>”
Format is : <%$ Resources: Resource, Name %>

After saving global resources VS creates strongly typed members Resources.CompanyGlobalInfo object for every global resource.

Use LocalizeControl instead of LiteralControl for Localization.

To access resource when they are not available at design time:


HTML Layout Best Preactices:

Some languages are structured from right to left. So to handle them as well follow the recommendations:

  1. Avoid absolution positioning size for control
  2. Use the Entire width (100%) and height of the from
  3. Size elements relative to overall size
  4. Use the Separate table cell for each control
  5. Avoid enabling NoWarp property in tables
  6. Avoid specifying the align property in tables

Setting the Culture:

A browser in Germany will present information in German Language as its configuration. And a foreigner UK would like to view information in English. So provide a dopdown of available languages from where he can select his/her language.

After then override the page’s InitalizaeCulture Method to specify the culture.

protected override void InitalizeCulture()
{
          UICulture = Session[“SelectedUICultureName”];
          Culture = Session[“SelectedCultureName”];
}

Culture defines the formatting for the number, currency, date etc.
UICulture defines the resource files to be used.

Defining Culture information in Web.config:
<globalization uiculture="en" culture="es-MX" /> 

Defining Culture information for each page:

<%@Page UICulture="en" Culture="es-MX" %>


System.Globalization.CulturesInfo.GetCultures(CultureTypes enum) to retrieve the desired culture list.

Popular posts from this blog

Culture Information and Localization in .NET

Namespace: System.Globalization CultureInfo Class:                 It provides information like the Format of numbers and dates, Culture’s Calendar, Culture’s language and sublanguage (if applicable), Country and region of the culture. The Basic use of CultureInfo class is shown here: • How string Comparisons are performed • How Number Comparison & Formats are performed • Date Comparison and Formats. • How resources are retrieved and used. Cultures are grouped into three categories: Invariant Culture : It’s Culture Insensitive. It can be used to build some trial application. It can be also used to build an application with hard-coded expiry date that ignores cultures. But using it for every comparison will be incorrect and inappropriate. Neutral Culture : English(en), Frensh(fr), and Spanish(sp). A neutral culture is related to language but it’s not related to specific regi...

Using ADO.NET Transaction Object, Saving CLR Objects and SqlNotificationRequest

Serializable allows one transaction to complete before the other start. SqlConnectoin support named savpoint to roll back to; that’s an equaliant to save transaction command in MS SQL Server. Using TransactionScope Object : A transaction can’t span multiple connections.   Local and distributed transaction ares supported in 1.x you have to Enterpeise seveices library to regiser multiple connections and then call EnlistDistributedTransaction. Distributed Transaction Coordinator is required for Distributed transaction that’s available on windows 2000 & +. In 2.X and later use TransactionScope object. Serializable allows one transaction to complete before the other start. SqlConnectoin support named savpoint to roll back to; that’s an equaliant to save transaction command in MS SQL Server. Using TransactionScope Object : Dispoase of the transaction must be called to complete the transaction. Distributed Transaction : ...

Code Access Security in .Net

Namespace: System.Security What is Code Access Security? Code Access Security is a mechanism through which Developers and administrators can restrict code from accessing different resources , without caring about the users’ access level. You can also control resource that can’t be controlled through traditional RBS (Role Based Security), e.g. Web Requests and DNS requests etc. It can be only applied to Managed Applications. These restriction are applied not to the user instead to the Application, thus it does not require username or password. Evidence: It is the information that runtime gather about the assembly to determine which Code Groups the assembly belongs to. The following table shows the common types of evidence that a host can present to the runtime. Evidence Description Application directory The application's installation directory. Hash Cryptographic hash such as SHA1. Publisher Soft...