有谁知道如何使用 javascript 从 Firefox 和 Google Chrome 获取浏览器文化?注意:这是一个 asp.net 3.5 Web 应用程序。
要求是尝试根据浏览器文化设置应用程序的显示文化。我发现其他浏览器的信息很少,但它们似乎不起作用。
我可以使用以下代码片段在 IE 中获取它:
var browserCulture = this.clientInformation.browserLanguage;
任何信息都会很棒!
有谁知道如何使用 javascript 从 Firefox 和 Google Chrome 获取浏览器文化?注意:这是一个 asp.net 3.5 Web 应用程序。
要求是尝试根据浏览器文化设置应用程序的显示文化。我发现其他浏览器的信息很少,但它们似乎不起作用。
我可以使用以下代码片段在 IE 中获取它:
var browserCulture = this.clientInformation.browserLanguage;
任何信息都会很棒!
对象上存在以下属性navigator
(在 IE 上也可以称为,clientInformation
但没有理由使用该名称):
language
(非IE,浏览器安装语言)browserLanguage
(IE,浏览器安装语言)userLanguage
(IE,用户级操作系统范围的语言设置)systemLanguage
(IE,操作系统安装语言)但!你不应该使用这些属性中的任何一个!在许多情况下,它们将是错误的语言。
它们都没有反映用户在浏览器的“首选语言”用户界面中实际配置的语言设置,而且用户很难更改它们。如果没有额外的简单手动方式来切换语言,则使用这些值中的任何一个都会造成很大的挫败感。
根据普通浏览器 UI 的配置,您应该嗅探以决定默认使用哪种语言的正确位置是Accept-Language
HTTP 请求中传递给服务器的标头。这是您可以从中选择的首选语言的排名列表,如果您使用它,它就是 ASP.NET 用来猜测自动客户端文化的内容。
不幸的是,这个属性在 JavaScript 中不可用!
您通常做的是使用您的服务器端来解析Accept-Language
标头并从中选择一种合适的语言来使用。在 ASP.NET 中,您可以从HttpRequest.UserLanguages获取预先排序的列表,然后选择您喜欢的第一个。
然后,您将该语言名称吐出到一个<script>
元素中,以将语言信息传递给客户端。
尝试这个:
var l_lang;
if (navigator.userLanguage) // Explorer
l_lang = navigator.userLanguage;
else if (navigator.language) // FF
l_lang = navigator.language;
else
l_lang = "en";
navigator.languages
是一个数组,按顺序包含所有选定的语言。并且仅适用于 Chrome 和 Firefox。
它与navigator.language
我的意思是navigator.language
不一定匹配navigator.languages[0]
。
只是要清楚。
要在 IE 中获取语言环境,您需要编写服务器端代码。我尝试使用 servlet 并获得了 IE 的接受语言。它显示了用户选择的语言。在客户端调用 servlet 并获取语言环境。
String name=request.getHeader("accept-language");
AcceptClass ac=new AcceptClass();
ac.setAccLang(name);
Gson gs=new Gson();
String json = gs.toJson(ac);
response.setContentType("application/json");
response.getWriter().write(json);