Search code examples
c#c#-4.0globalizationcultureinfoinvariantculture

How to set default culture info for entire c# application?


I want to set default culture info for specific class or for entire application.

For example in Turkey 3,2 = in English 3.2

So application uses my local culture but I want it to use as default:

System.Globalization.CultureInfo.InvariantCulture

How can I set it to that as default for that specific class or for entire application?


Solution

  • Not for entire application or particular class.

    CurrentUICulture and CurrentCulture are settable per thread as discussed here Is there a way of setting culture for a whole application? All current threads and new threads?. You can't change InvariantCulture at all.

    Sample code to change cultures for current thread:

    CultureInfo ci = new CultureInfo(theCultureString);
    Thread.CurrentThread.CurrentCulture = ci;
    Thread.CurrentThread.CurrentUICulture = ci;
    

    For class you can set/restore culture inside critical methods, but it would be significantly safe to use appropriate overrides for most formatting related methods that take culture as one of arguments:

    (3.3).ToString(new CultureInfo("fr-FR"))