Friday, 19 October 2012

Multilingual website using asp.net

Multilingual website using asp.net

Step 1: in design create a drop down to select the language  and having few field such as name,number,currency and date specific to culture












<pre class="brush: csharp">// "ddlLanguage"
runat="server" AutoPostBack="True" 
            onselectedindexchanged="ddlLanguage_SelectedIndexChanged" 
            meta:resourcekey="ddlLanguageResource1">
        "en-us">English
        "fr-FR">French
        

    Your Current Culture is -"lblCulture" runat="server" Text="Label">
    
    "lblName" runat="server"  Text="Name" meta:resourcekey="lblNameResource1">                   
        "txtName" runat="server" meta:resourcekey="txtRName" Text="TechTT">
        
        
      
    
      
    "lblCurrency" runat="server" Text="Currency" meta:resourcekey="lblCurr">               
    "txtCurrency" runat="server" >
    
    
    "lblNFormat" runat="server" Text="No." meta:resourcekey="lblNumber">                       
    "txtN" runat="server" >
    
    
    "lblCDate" runat="server" Text="Current Date" meta:resourcekey="lblDate">          
    "txtCurrentDate" runat="server">
     
</pre>

      
    

Step 3: in code behind, on selection of language we will convert  the data according to Culture and UICulture

Code on selection change event
UICulture = ddlLanguage.SelectedValue;
        Culture = ddlLanguage.SelectedValue;
  
          
  
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(ddlLanguage.SelectedValue);
        Thread.CurrentThread.CurrentCulture= CultureInfo.CreateSpecificCulture(ddlLanguage.SelectedValue);
          
   //to get the current culture
               CultureInfo c = CultureInfo.CurrentCulture;
  
               lblCulture.Text = c.NativeName;
        //currentculture UI
               lblName.Text = Convert.ToString(this.GetLocalResourceObject("lblNameResource1.Text"));
               txtName.Text=Convert.ToString (this.GetLocalResourceObject ("txtRName"));
               lblCurrency.Text = Convert.ToString(this.GetLocalResourceObject("lblCurr"));
               lblNFormat.Text = Convert.ToString(this.GetLocalResourceObject("lblNumber"));
               lblCDate.Text = Convert.ToString(this.GetLocalResourceObject("lblDate"));
  
        //CurrentCulture specific to currency and no. format etc.
        double Currency = 500.50;
        double noformat = 9580000.75;
  
        txtCurrency.Text = Currency.ToString("c");
        txtN.Text = noformat.ToString("n");
        txtCurrentDate.Text = DateTime.Now.ToLongDateString();