Pregunta

Buenos días,

Disculpas por la pregunta de novato. Recién estoy comenzando con la configuración de internacionalización de ASP.NET.

Información de fondo:

Tengo un sitio web que muestra un objeto HTML < table > . En ese objeto HTML < table > , tengo una columna que muestra las fechas. Mi servidor está en los EE. UU., Esas fechas se muestran como MM / DD / AAAA . Muchos de mis usuarios se conectan a esta página web a través de Excel, a través de los Datos - > Importar datos externos - > Importar interfaz de consulta web. Mis usuarios, en su mayor parte, están en los EE. UU., Por lo que esas fechas se muestran correctamente en sus pantallas de Excel.

Ahora necesito hacer que la página web funcione para los usuarios del Reino Unido. Tal como están, están descargando las fechas como MM / DD / AAAA , lo que hace que sus hojas de cálculo no se puedan usar ya que su configuración regional está establecida en DD / MM / AAAA .

Mi pregunta es:

¿Cómo hago para que el servidor web se dé cuenta de que la solicitud entrante tiene una configuración de cultura en-GB ? Podría diseñar mi propia solución personalizada, pero estoy seguro de que no soy el primer programador en encontrar esto. ¿Cómo manejan esto los profesionales? Estoy buscando una solución que sea relativamente simple y rápida de implementar, pero no quiero simplemente poner un pedazo de mi propia lógica con errores para que tenga miedo de 6 meses a partir de ahora.

Muchas gracias de antemano, -Alan.

¿Fue útil?

Solución

Un par de puntos:

  • La < globalización > El elemento también necesita el atributo culture = " auto " ;. El atributo uiCulture afecta el lenguaje utilizado para recuperar recursos. El atributo cultural afecta a la cultura utilizada para formatear números y fechas.

  • Como se señaló en este artículo de MSDN , No es una buena práctica confiar exclusivamente en la configuración del navegador para determinar la cultura de la interfaz de usuario de una página. Los usuarios usan frecuentemente navegadores que no están configurados según sus preferencias (por ejemplo, en un cibercafé). Debe proporcionar un método para que los usuarios elijan explícitamente un idioma o idioma y cultura (nombre CultureInfo) para la página.

Otros consejos

Puede permitir que el navegador configure su cultura de IU automáticamente si lo desea, abriendo web.config, de esta manera:

<configuration>
   <system.web>    
       <globalization uiCulture="auto" />
       ...

Y luego la cultura establecida por el navegador se establecerá automáticamente en su aplicación. Esto significa que cuando tiene los valores de fecha / hora de visualización del marco, se formatearán de acuerdo con la cultura de la interfaz de usuario del hilo actual.

Esto también ayudará si está utilizando moneda y / o texto localizado (sin embargo, debe proporcionar los recursos localizados para cada cultura que apoya).

También puede aceptar un parámetro de cadena de consulta para anular la configuración de cultura.

La inicialización de cultura debe ir en el método Page.InitializeCulture.

protected override void InitializeCulture ( )
{
  Thread.CurrentThread.CurrentCulture
    = Thread.CurrentThread.CurrentUICulture
    = Request.QueryString [ "culture" ] != null ? new CultureInfo ( Request.QueryString [ "culture" ] ) : CultureInfo.InvariantCulture;
  //base.InitializeCulture ( );
}

Uso: http://tempuri.org/page.aspx?culture=en -GB

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