estoy marcando esta pregunta para mí con una estrella y compartir aquí un código que esencialmente convierte el Request.UserLanguages
en una matriz de CultureInfo en posturas para su uso posterior en su aplicación. También es más flexible trabajar con CultureInfo que solo con los códigos ISO, porque con CultureInfo puede acceder a todas las propiedades de una cultura (como Nombre, Nombre de idioma de dos caracteres, Nombre nativo, ...):
// Create array of CultureInfo objects
string locale = string.Empty;
CultureInfo[] cultures = new CultureInfo[Request.UserLanguages.Length + 1];
for (int ctr = Request.UserLanguages.GetLowerBound(0); ctr <= Request.UserLanguages.GetUpperBound(0);
ctr++)
{
locale = Request.UserLanguages[ctr];
if (!string.IsNullOrEmpty(locale))
{
// Remove quality specifier, if present.
if (locale.Contains(";"))
locale = locale.Substring(0, locale.IndexOf(';'));
try
{
cultures[ctr] = new CultureInfo(locale, false);
}
catch (Exception) { continue; }
}
else
{
cultures[ctr] = CultureInfo.CurrentCulture;
}
}
cultures[Request.UserLanguages.Length] = CultureInfo.InvariantCulture;
HTH
¿Qué tipos de valores que hace estas cabeceras contienen normalmente? Sería genial trabajar con ejemplos. –
Cita: 'Normalmente, estos consisten en un código de dos caracteres para el idioma, un guión y un código de dos caracteres para la cultura, como" en-us "para inglés estadounidense y" fr-ca "para francés canadiense. '. Entonces es una matriz 'string []' que contiene valores como esos. –
Agregó un ejemplo. –