asp.net-mvc - istringlocalizer - ui culture
ASP.NET MVC: ¿Cuándo establecer Thread.CurrentThread.CurrentUICulture? (2)
Aquí hay una muestra usando un HttpModule:
http://weblogs.manas.com.ar/smedina/2008/12/17/internationalization-in-aspnet-mvc/
Otras opciones, crear una clase de Controlador base e implementar la lógica de localización allí. O use un atributo de filtro de acción, pero tendrá que recordar agregarlo en cada controlador o combinar este enfoque con la clase de controlador base.
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 los Ayudantes de Localización de Matt . Otras cadenas deben almacenarse en una base de datos.
Mi pregunta: ¿Debo establecer CurrentUICulture
inicio del proceso de solicitud y usarlo en toda la aplicación, o utilizar directamente Request.UserLanguages[0]
cuando sea necesario?
En este momento estoy pensando que debería establecer CurrentUICulture
en Application_BeginRequest . La implementación se vería algo 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?
Actualizar:
Ariel''s publicación Ariel''s me hizo darme cuenta de 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"/>
Request.UserLanguages [0] solo puede ser una sugerencia del idioma que los usuarios desean ver. La mayoría de los usuarios no saben dónde cambiar el idioma del navegador.
Otro punto: No esté seguro de que Request.UserLanguages [0] sea un idioma válido. Incluso puede ser nulo. (No estoy seguro de qué bots tienen allí)
Por lo general, 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 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.
Yo uso un filtro para establecer Thread.CurrentThread.CurrentUICulture. Eso está bien, siempre y cuando ningún otro filtro use Thread.CurrentThread.CurrentUICulture. De lo contrario, tendría que establecer el orden de ejecución correcto para los filtros.
También utilizo el ayudante de Matts y funcionó muy bien hasta ahora.