2009-08-15 14 views
10

Tengo un problema con algunas conversiones de bytes y algunos de mis cálculos en una de mis aplicaciones. Pude contribuir a la persona que lo ejecuta con un entorno de Cultura italiana en Windows. Entonces mi pregunta es: ¿Cuál es la mejor manera de "en-EE. UU." En cualquier computadora que ejecute mi aplicación. Tengo un ejemplo de código a continuación, pero no estoy seguro de si algún hilo que use lo incluirá.¿Cómo puedo forzar la Cultura de localización a EE.UU. para toda la aplicación?

[STAThread] 
static void Main() 
{ 
    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US"); 
    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); 

    ... 
} 
+0

Esto: "Tengo un problema con algunas conversiones de bytes" no debería tener nada que ver con la configuración de Cultura. El problema está en las conversiones, no en el hecho de que se seleccione una cultura que no sea en EE. UU. –

Respuesta

9

Su código se establecerá la cultura del hilo actual, pero cualquier nuevos temas que se crean no tendrá esta cultura 'heredada'. Tienes que establecer la cultura que requieres tú mismo. (Creo que cualquier nuevos temas serán creados con la cultura de Windows instalado, pero estoy dispuesto a estar equivocado en eso.)

Esto se responde en este post: Is there a way of setting culture for a whole application? All current threads and new threads?

Personalmente, encuentro este comportamiento es molesto, pero así son las cosas.

+1

En realidad tiene sentido. Piense en ASP.NET donde múltiples usuarios que acceden a un sitio pueden tener culturas separadas activas en cualquier momento dado. Debe tener una línea de base para comenzar si hay un retroceso cuando una cultura no puede coincidir. –

+0

@Rick: Ese es un punto justo. No tengo experiencia en ASP.NET, así que no es algo que haya considerado antes. – Andy

12

El problema que describe es la razón por la que InvariantCulture existe. En lugar de cambiar la cultura de la aplicación, debe hacer la manipulación/persistencia de los datos detrás de escena con la cultura invariable y luego dejar que la cultura del usuario determine cómo se representan los valores.

Cuestiones relacionadas