Creo que necesita escribir el código en lea la cultura del usuario de la solicitud del navegador entrante, y configure su CultureInfo a partir de ahí.
This fellow describes how they do it: Establezca la cultura de visualización para el subproceso actual en la referencia cultural más adecuada del objeto de "solicitud" Http entrante del usuario.
Él tiene una excelente discusión allí, pero esto es básicamente cómo lo hace:
En Page_Load
, que hacen de esta llamada: UIUtilities.setCulture(Request);
Cuando esto es lo que se llama:
/// Set the display culture for the current thread to the most
/// appropriate culture from the user's incoming Http "request" object.
internal static void setCulture(HttpRequest request)
{
if (request != null)
{
if (request.UserLanguages != null)
{
if (request.UserLanguages.Length > -1)
{
string cultureName = request.UserLanguages[0];
UIUtilities.setCulture(cultureName);
}
}
// TODO: Set to a (system-wide, or possibly user-specified) default
// culture if the browser didn't give us any clues.
}
}
/// Set the display culture for the current thread to a particular named culture.
/// <param name="cultureName">The name of the culture to be set
/// for the thread</param>
private static void setCulture(string cultureName)
{
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(cultureName);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(cultureName);
}
En la línea derecha, pero tenga en cuenta que el encabezado Aceptar idioma enviado por el navegador no es necesariamente el idioma preferido del usuario. Estoy en Europa y tengo una versión estadounidense de Windows, entonces mi IE8 envía en-US. También tenga en cuenta que el nombre en el encabezado accept-language puede no ser un nombre de cultura .NET válido, por lo que la llamada a CreateSpecificCulture debe incluirse en try/catch. – Joe
sin suerte. Todavía estoy obteniendo en-us en testing – thchaver
¿Qué obtienes de Request.UserLanguages? Es decir, ¿está seguro de qué idioma está solicitando su navegador? – DOK