Pregunta

He trabajado con valores de globalización en el pasado, pero no dentro del entorno .NET, que es el tema de esta pregunta. Lo que estoy viendo es sin duda debido al conocimiento todavía tengo que aprender lo que agradecería iluminación en el siguiente.


Configuración: Mi configuración de idioma predeterminado es Inglés (en us-específica). He añadido una segunda lengua (danés) en mi sistema de desarrollo (WinXP) y luego abrir la barra de idiomas para que pudiera seleccionar a voluntad.


he seleccionado danés en la barra de idioma, entonces abrió la libreta y encontré el idioma Inglés vuelto a en la barra de idioma. Yo entiendo que la configuración de idioma es por aplicación , por lo que parecía que el Bloc de notas establecido por defecto a la parte posterior Inglés. (Me pareció extraño ya que Windows Bloc de notas y por lo tanto se utiliza en todo el mundo.) Cierre el Bloc de notas devolvió el ajuste en la barra de idiomas al Danés. a continuación, puse en marcha mi aplicación WinForm encargo abierta - que sé que no establece el lenguaje - y también revertido del Inglés al Danés cuando se abre, luego de vuelta a danés con la rescisión

Pregunta # 1A: ¿Cómo hago para que mi aplicación WinForm en el lanzamiento de heredar la configuración actual de la barra de idiomas? Mi experimento parece indicar que cada aplicación se inicia con el valor por defecto del sistema y requiere que el usuario cambie manualmente una vez que la aplicación se está ejecutando - esto parece ser un inconveniente importante para cualquier persona que quiere trabajar con más de un idioma

Pregunta # 1B: Si uno debe, de hecho, establecer el idioma manualmente en un escenario multi-idioma, ¿cómo cambio mi idioma predeterminado del sistema (por ejemplo, al danés) para que pueda probar mi El lanzamiento de la aplicación en otro idioma?


He añadido una pantalla del idioma actual en mi solicitud para este experimento siguiente. Específicamente me puse un controlador MouseEnter en una etiqueta que se ajusta a su descripción CultureInfo.CurrentCulture.Name por lo que cada vez que el ratón más que pensé que debería ver la configuración de idioma actual. Desde el establecimiento de la lengua antes de lanzar mi aplicación no funcionaba, me lancé a continuación, establecer el idioma al Danés. He encontrado que algunas cosas (como escribir en un cuadro de texto) hicieron reconocer esta opción danesa. Pero pasando el ratón sobre la etiqueta instrumentado aún mostraba es-!

Pregunta # 2A: ¿Por qué CultureInfo.CurrentCulture.Name no refleja el cambio de mi barra de idiomas, mientras que otras partes de mi aplicación parecen reconocer el cambio? (Tratando CultureInfo.CurrentUICulture.Name produjo el mismo resultado.)

Pregunta # 2B: ¿Hay un evento que dispara contra los cambios en la barra de idioma, así que podían reconocer dentro de mi aplicación cuando los cambios de configuración de idioma

?

2010.05.13 actualización

La información breve pero dulce proporcionada por Eric de Microsoft (véase su respuesta a continuación) se dirigió directamente sólo uno de mis cuatro preguntas (# 2A) pero proporciona sólo el impulso que necesitaba para profundizar y averiguar el resto. Para el beneficio de otros que también puede ser confundido por esto, esto es lo que descubrí:

La respuesta # 1A: hereda de aplicación Una el ajuste del idioma de entrada predeterminado, no el idioma especificado en la barra de idioma. Una vez que su aplicación se está ejecutando, entonces los cambios en la barra de idiomas se notará inmediatamente por su aplicación.

La respuesta # 1B:. Configuración del idioma de entrada por defecto se realiza a través Idiomas ficha Configuración pestaña idioma de entrada predeterminado regional y de idioma del panel de control >> >> >> >> Detalles

La respuesta # 2A: respondida por Eric, la cultura actual es distinto del idioma de entrada actual que se refleja en la barra de idiomas; escribir en un cuadro de texto está influenciada sólo por el idioma de entrada actual.

La respuesta # 2B: No hay evento predefinido, ya sea para el idioma de entrada o notificación actual cambio de cultura. Un hecho importante a destacar aquí es que el lenguaje de entradavariaciones que se registran de forma automática inmediatamente mientras que los cambios de cultivo actuales no son. Debe reiniciar su solicitud de cambio de la cultura actual que entrará en vigor - a menos que usted puede notar el cambio y actuar sobre él mismo. Con ese fin he encontrado un artículo de MSDN ( Las muchas caras de la clase CultureInfo ) que proporciona simplemente como un gancho para notar el cambio.

¿Fue útil?

Solución

Hay tres configuraciones de idioma separados en juego. Los controles de la barra idioma el idioma de entrada ( InputLanguage ) que es distinta de la lengua para la visualización de la interfaz de usuario (CurrentUICulture) que es distinta de la lengua para la clasificación / formatear / análisis sintáctico (CurrentCulture).

Es cierto que esto es confuso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top