0

我已将阿拉伯语设置为客户端的机器语言。但是在使用 C# 程序时

var test = Thread.CurrentThread.CurrentCulture;

它显示语言为En-US。?
我如何获得机器的选定语言?

4

2 回答 2

1

这将取决于客户端浏览器的配置方式。如果客户端浏览器的默认语言配置为,en-US您将永远无法获得服务器上的实际语言。例如,在 Google Chrome 中有一个设置,您可以在其中指定发送到服务器的首选语言:

在此处输入图像描述

因此,一旦您将 Web 浏览器的首选语言配置为其他语言,浏览器就会将此语言作为Accept-LanguageHTTP 请求标头发送,您将能够在服务器上检索它。在这种情况下,ASP.NET 会自动将其分配给当前线程的文化,假设在您的 web.config 中您没有在<globalization>元素中更改它,而是保留了默认值。

于 2013-08-05T10:56:02.567 回答
0

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;
}
于 2013-08-05T11:03:29.533 回答