不要为此使用IP地址。它不适合这个问题。例如,如果一个英国用户带着他们的笔记本电脑去度假,并且使用来自不同国家的网站呢?他们可能仍然希望用英语查看网站,但你最终会用另一种语言向他们提供内容。
相反,使用
Accept-Language
当服务器无法通过另一种方式(如特定的URL)确定语言时,将使用此头提示,该方式由显式用户决策控制。
一个例子
StringWithQualityHeaderValue preferredLanguage = null;
if (Request.Headers.AllKeys.Contains("Accept-Language"))
{
preferredLanguage = Request.Headers["Accept-Language"]
.Split(',')
.Select(StringWithQualityHeaderValue.Parse)
.OrderByDescending(s => s.Quality.GetValueOrDefault(1))
.FirstOrDefault();
}
if (preferredLanguage?.Value == "fr")
{
return RedirectToAction("fr", "home");
}
// Check for other languages.
// ...
// If no redirects match, default to English.
return RedirectToAction("en", "home");