Pregunta

Estoy empezando a localizar una aplicación ASP.NET MVC. La mayoría de las cadenas se definirán en archivos de recursos y se recuperarán a través de Ayudantes de localización de Matt . Otras cadenas deben almacenarse en una base de datos.

Mi pregunta: ¿Debo establecer CurrentUICulture al principio de la canalización de solicitudes y usarlo en toda la aplicación, o usar directamente Request.UserLanguages ??[0] cuando sea necesario?

En este momento estoy pensando que debería configurar CurrentUICulture en Application_BeginRequest . La implementación se vería así:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    var cultureName = HttpContext.Current.Request.UserLanguages[0];
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
}

¿Es este el mejor lugar para configurar CurrentUICulture y es Request.UserLanguages ??[0] el mejor lugar para obtener esa información?


Update:

La publicación de Ariel muestra que esto se puede definir sin código, usando web.config

<system.web>
  <!--If enableClientBasedCulture is true, ASP.NET can set the UI culture and culture for a Web page automatically, based on the values that are sent by a browser.-->
  <globalization enableClientBasedCulture="true" culture="auto:en-US" uiCulture="auto:en"/>
¿Fue útil?

Solución

Aquí hay una muestra usando un HttpModule:

http: //weblogs.manas .com.ar / smedina / 2008/12/17 / internationalization-in-aspnet-mvc /

Otras opciones, cree una clase de controlador base e implemente la lógica de localización allí. O utilice un atributo de filtro de acción, pero deberá recordar agregarlo en cada controlador o combinar este enfoque con la clase de controlador base.

Otros consejos

Request.UserLanguages ??[0] solo puede ser una pista de qué idioma desean ver los usuarios. La mayoría de los usuarios no saben dónde cambiar el idioma del navegador.

Otro punto: no asegúrese de que Request.UserLanguages ??[0] sea un idioma válido. Incluso puede ser nulo. (No estoy seguro de qué bots tienen allí)

Generalmente tiene un selector de idioma en la página. Una vez que un usuario ha seleccionado un idioma allí, se almacena en una cookie, sesión o url. Me gusta usar la URL porque creo que se ve bonita.

Si un usuario ve su página sin haber establecido un idioma en su página, debe verificar si Request.UserLanguages ??[0] es un idioma que admite y establecer Thread.CurrentThread.CurrentUICulture.

Utilizo un filtro para configurar Thread.CurrentThread.CurrentUICulture. Eso está bien siempre y cuando ningún otro filtro esté usando Thread.CurrentThread.CurrentUICulture. De lo contrario, deberá establecer el orden de ejecución correcto para los filtros.

También utilizo Matts helper y funcionó muy bien hasta ahora.

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