Search code examples
.netconfigurationlocalizationapp-configglobalization

How do I set CultureInfo.CurrentCulture from an App.Config file?


I need to set my application's culture through an App.Config file, so that "pt-BR" is used automatically for parsing dates without the need to manually inform the culture for each operation.

As far as I know, there's a globalization section that can be defined inside the system.web section in a Web.Config file, but I'm running a console application and I can't figure this out.

Any idea?


Solution

  • I don't know a built-in way to set it from App.config, but you could just define a key in your App.config like this

    <configuration>
        <appSettings>
            <add key="DefaultCulture" value="pt-BR" />
        </appSettings>
    </configuration>
    

    and in your application read that value and set the culture

    CultureInfo culture = new CultureInfo(ConfigurationManager.AppSettings["DefaultCulture"]);
    Thread.CurrentThread.CurrentCulture = culture;
    Thread.CurrentThread.CurrentUICulture = culture;
    

    Also, as @Ilya has mentioned, since .NET 4.5 you can set the default culture once, rather than per-thread:

    CultureInfo.DefaultThreadCurrentCulture = culture
    CultureInfo.DefaultThreadCurrentUICulture = culture