Localization in InfoPath form in SharePoint

Here is the one another way I could implement to localize the InfoPath form in my current SharePoint engagement.

1: create the number of localize xml file, you want to support. File name format must be locale.xml as “en-US.xml”, “en-GB.xml” etc.

2: In FormEvents_Loading function add code

        public void FormEvents_Loading(object sender, LoadingEventArgs e)
{
try
{
//your Code
EstablishLocale();
}
catch (Exception ex)
{
e.CancelableArgs.Message = ex.Message;
}
}

3: Definition of EstablishLocale

        private void EstablishLocale()
{
string localeName = “en-US”; //which one you want to make dafault

            if (this.Application.Environment.IsBrowser)
{
localeName = SPContext.Current.Web.Locale.Name.ToLower();
}
FileQueryConnection dc = (FileQueryConnection)DataConnections["Resources"];
try
{
dc.FileLocation = localeName + ".xml";
dc.Execute();
}
catch (Exception ex)
{
// Eat any exceptions; they happen only when the resource file does not exist (we use the default file in this case).
}
}

Comments

  • Anonymous
    January 14, 2009
    Can you tell the structure of locale.xml file

  • Anonymous
    July 24, 2011
    Hi can u send me the sample full coading this loading event.. i have added structure of the Xml file.... thanks <?xml version="1.0" encoding="utf-8"?> <root>  <xsd:schema id="root" xmlns="" xmlns:xsd="www.w3.org/.../XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">    <xsd:import namespace="www.w3.org/.../namespace" />    <xsd:element name="root" msdata:IsDataSet="true">      <xsd:complexType>        <xsd:choice maxOccurs="unbounded">          <xsd:element name="metadata">            <xsd:complexType>              <xsd:sequence>                <xsd:element name="value" type="xsd:string" minOccurs="0" />              </xsd:sequence>              <xsd:attribute name="name" use="required" type="xsd:string" />              <xsd:attribute name="type" type="xsd:string" />              <xsd:attribute name="mimetype" type="xsd:string" />              <xsd:attribute ref="xml:space" />            </xsd:complexType>          </xsd:element>          <xsd:element name="assembly">            <xsd:complexType>              <xsd:attribute name="alias" type="xsd:string" />              <xsd:attribute name="name" type="xsd:string" />            </xsd:complexType>          </xsd:element>          <xsd:element name="data">            <xsd:complexType>              <xsd:sequence>                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />              </xsd:sequence>              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />              <xsd:attribute ref="xml:space" />            </xsd:complexType>          </xsd:element>          <xsd:element name="resheader">            <xsd:complexType>              <xsd:sequence>                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />              </xsd:sequence>              <xsd:attribute name="name" type="xsd:string" use="required" />            </xsd:complexType>          </xsd:element>        </xsd:choice>      </xsd:complexType>    </xsd:element>  </xsd:schema>  <resheader name="resmimetype">    <value>text/microsoft-resx</value>  </resheader>  <resheader name="version">    <value>2.0</value>  </resheader>  <resheader name="reader">    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>  </resheader>  <resheader name="writer">    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>  </resheader>  <!--<data> nodes go here.--> </root>