2012-02-01 30 views
27

Necesito establecer la cultura de mi aplicación a través de un archivo App.Config, de modo que "pt-BR" se use automáticamente para analizar las fechas sin la necesidad de informar manualmente la cultura para cada operación.¿Cómo configuro CultureInfo.CurrentCulture desde un archivo App.Config?

Hasta donde yo sé, hay una sección globalization que se puede definir dentro de la sección system.web en un archivo Web.Config, pero estoy ejecutando una aplicación de consola y no puedo resolver esto.

¿Alguna idea?

Respuesta

22

no sé una manera integrada para configurarlo de App.config, pero sólo podría definir una clave en su App.config como esto

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

y en su aplicación leer ese valor y establecer la cultura

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

No funciona para un programa de terceros. –

+1

Creo que este es el enfoque que debe seguir si desea anular la cultura del sistema en la aplicación. Normalmente, la cultura debe ser recogido automáticamente de la configuración del sistema operativo. En lugar de codificar la cultura de esta manera, normalmente confiaría en que las computadoras del cliente tengan correctamente configuradas su Región e Idioma. – Mick

1

No lo haga de esa manera yo mismo, pero al parecer. Ya se puede decir, antes InitialiseComponent si es UICulture, es sólo

Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-BR") 

y o

Thread.CurrentThread.CurrentUICulture = new CultureInfo("pt-BR") 

Cualquier cosa que usted no desea utilizar la cultura actual para el uso InvariantCulture

Personalmente , Preferiría dejar la cultura actual solo. Use InvariantCulture para toda la globalización, I no desea variar. Luego configure el cultivo neutral en las propiedades del proyecto.

Siempre siento que la fijación de la cultura actual para que el código funcione a pesar de que la elección personal del usuario sea diferente para ser una especie de desagradable out.

+0

En cuanto a su punto "Personalmente": ¿qué sucede si está implementando un sistema del Reino Unido en el sitio de un cliente y su imagen dorada es la cultura predeterminada de EE. UU.? Esto sucede todo el tiempo en el Reino Unido, luego recibimos quejas cuando '{0: c}' muestra signos de dólar. – tommed

+2

Si quieren Cultura de los EE. UU. Y se requieren algunos saltos de aro, ¿no es así? Creo que solo lo trato como una aplicación multidivisa en ese momento, es decir, cada valor monetario tendría un atributo de moneda, y dejaría la cultura fuera de él, además de por el incumplimiento de la moneda. –

+0

No estoy en desacuerdo, es una lástima que ASP.NET te dé estas cosas gratis, la vergüenza de que la globalización es parte de system.web – tommed

-2

usando System.Threading;

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo ("bn-BD");

// Para Bangladesh. Uso esta línea en cada formulario de página evento de carga

Cuestiones relacionadas