2009-02-04 25 views
6

Tengo una aplicación que es para un mercado global y necesita ser localizable. Durante el desarrollo tuve algunos problemas en el sentido de que mis ensamblajes satelitales nunca parecían ser recogidos, incluso cuando cambié mi configuración regional. Después de algunas investigaciones ahora entiendo por qué esto es y pude probar estableciendo CurrentUICulture en el código y verificando que todo funcionó como se esperaba.¿Debo configurar Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture de forma predeterminada en mi aplicación?

Ahora se trata de empaquetar la aplicación para su lanzamiento y no estoy seguro si la configuración de Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture para el hilo actual cuando se inicia mi aplicación es una buena idea. En el lado positivo, mi aplicación será localizable cambiando la configuración regional (si esto es una ventaja), pero me preocupa que pueda haber inconvenientes imprevistos en esto. Uno que inmediatamente me viene a la mente es que, aunque lo que he hecho está muy bien para mi hilo, no se aplicará (de lo que entiendo por leer aquí y alrededor) a ningún hilo creado por mi aplicación (a menos Configuré CurrentUICulture en esos también) o peor por cualquier componente que use que pueda crear sus propios hilos.

¿Podría haber otros problemas? ¿Está configurando las CurrentCultures como el mismo que es una práctica estándar o algo que está mal visto?

Me gustaría contar con la mayor cantidad de información sobre los altibajos de esto antes de tomar una decisión.

Gracias

Sam

Respuesta

5

Sam, no ensucia con él a menos que esté muy seguro de lo que estás haciendo.

Supongo que estamos hablando de WinForms aquí. El marco recoge la mejor configuración del sistema (según la configuración del usuario). De su pregunta, podría ser más un problema de prueba. Regularmente agrego un código después de #if DEPURAR para elegir una configuración regional para fines de prueba.

Mi propio ejemplo: mi configuración regional es holandesa (nl-NL) pero normalmente ejecuto versiones en inglés de Windows. Si reemplaza la CurrentUICulture obtendría la versión holandesa (si está disponible) que generalmente está bien. Pero sé por experiencia que algunos controles/complementos permanecerán en inglés (incluidos los cuadros de ShowMessage y los cuadros de diálogo estándar). La combinación es fea.

Pero también considere el caso cuando no agrega satélites que coincidan con CurrentCulture. El sistema recurriría al valor predeterminado en su programa, mientras que la cultura de UI de los usuarios podría ser una mejor opción. No conozco todas las reglas de respaldo, pero probablemente pueda obtener algo similar a:

El usuario ejecuta la configuración fr-CA en las ventanas FR-FR. Tu programa vuelve a ser en-US, usuario n'est pas happy.

Mi consejo:

  • hacer algunas pruebas de campo
  • si construye en la anulación continuación utilizar un interruptor en
+0

Gracias, toda la información útil. Estoy de acuerdo con los principios y creo que utilizaremos un enfoque que permitirá activar y desactivar la opción. –

2

pregunta Antiguo app.config, pero algunos comentarios de una usuario y desarrollador:

  • Soy noruego, pero tengo un sistema operativo en inglés por un motivo. Odio cuando las aplicaciones aparecen en noruego solo porque mis configuraciones regionales son noruegas.
  • He usado el Thread.CurrentThread.CurrentCulture antes, y aunque parece funcionar bien al principio ... de repente tienes algo que dispara un nuevo hilo ... (pasé bastante tiempo averiguando por qué obtuve el formato de número correcto en mi aplicación, pero no en mis informes, por ejemplo)
Cuestiones relacionadas