我已将阿拉伯语设置为客户端的机器语言。但是在使用 C# 程序时
var test = Thread.CurrentThread.CurrentCulture;
它显示语言为En-US。?
我如何获得机器的选定语言?
我已将阿拉伯语设置为客户端的机器语言。但是在使用 C# 程序时
var test = Thread.CurrentThread.CurrentCulture;
它显示语言为En-US。?
我如何获得机器的选定语言?
这将取决于客户端浏览器的配置方式。如果客户端浏览器的默认语言配置为,en-US
您将永远无法获得服务器上的实际语言。例如,在 Google Chrome 中有一个设置,您可以在其中指定发送到服务器的首选语言:
因此,一旦您将 Web 浏览器的首选语言配置为其他语言,浏览器就会将此语言作为Accept-Language
HTTP 请求标头发送,您将能够在服务器上检索它。在这种情况下,ASP.NET 会自动将其分配给当前线程的文化,假设在您的 web.config 中您没有在<globalization>
元素中更改它,而是保留了默认值。
Request.UserLanguages是您要查找的属性。
请记住,此数组可能包含由请求标头设置的任意(甚至不存在)语言。
例子:
var lobUserLanguages = Request.UserLanguages;
CultureInfo ci;
if (lobUserLanguages.Count > 0)
{
try
{
ci = new CultureInfo(lobUserLanguages[0]);
}
catch(CultureNotFoundException)
{
ci = CultureInfo.InvariantCulture;
}
}
else
{
ci = CultureInfo.InvariantCulture;
}