I kender allesammen de der websites hvor man først skal vælge et sprog eller en lokation. UPS gør det bla. CDON gør det faktisk også. Ret store sites. Jeg kan bare ikke forstå hvorfor de ikke kan finde ud af at gøre det automatisk. De kan skære et trin væk fra navigationsforløbet, og det må vel betyde bedre usability og færre klik (mindre trafik i sidste ende og en lavere regning).
Informationen omkring brugerens sprog ligger som regel i browseren. Der kan faktisk også optræde flere sprog, men det bør bare gøre det nemmere for både UPS og CDON.
Sådan indstiller sprog i din browser. (IE og FF).

I System.Web.HttpRequest klassen er der en readonly property ved navn UserLanguages hvor du netop kan få disse sprog ud. Jeg har skrevet en lille extension method som gør det nemmere at finde ud af hvilke sprog der fortrækkes af brugeren.
public static class RequestExtensions {
public static Dictionary<decimal, CultureInfo> GetUsersPreferableLanguages(this HttpRequest request)
{
string[] languages = request.UserLanguages;
if (languages != null)
{
CultureInfo culture;
Dictionary<decimal, CultureInfo> preferableLanguages =
new Dictionary<decimal, CultureInfo>();
foreach (var lang in languages)
{
if (lang.Contains(";"))
{
decimal preferRate = decimal.Parse(lang.Substring(lang.IndexOf("=") + 1),
System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
culture = GetCulture(lang.Substring(0, lang.IndexOf(";")));
if (culture != null)
preferableLanguages.Add(preferRate, culture);
}
else
{
preferableLanguages.Add(1, GetCulture(lang));
}
}
return preferableLanguages;
}
return null;
}
private static CultureInfo GetCulture(string culture)
{
try
{
return new CultureInfo(culture);
}
catch (CultureNotFoundException exception)
{
return null;
}
}
}
Nu kan du direkte på Request objektet kalde:
protected void Page_Load(object sender, EventArgs e)
{
Request.GetUsersPreferableLanguages();
}