我想取回浏览器的语言偏好,在设置-语言-语言偏好中设置。我想检查语言是设置为德语还是英语。使用以下代码,我可以覆盖语言首选项并将其设置为“de”或“en”,但我如何才能真正获得语言?
当我使用
var r = request.Headers.GetValues("Accept-Language");
时,标题被选中,但这可能与浏览器的语言偏好不符。另外,如果默认情况下未设置标头,那么我会收到错误"The given header was not found"
.
如何在不删除和设置的情况下检索浏览器的语言首选项?这将允许我检查语言偏好并在必要时进行更改。例如,如果偏好是'de',那么我将其更改为'en'。
using System;
using System.Linq;
using System.Net.Http;
using Microsoft.AspNetCore.Http;
class Program
{
static async Task Main(string[] args)
{
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://www.google.de/?hl=de");
request.Headers.Remove("Accept-Language");
request.Headers.Add("Accept-Language", "de");
var response = await client.SendAsync(request);
Console.WriteLine("Erste response " + response.StatusCode);
var request1 = new HttpRequestMessage(HttpMethod.Get, "https://www.google.de/?hl=de");
request1.Headers.Remove("Accept-Language");
request1.Headers.Add("Accept-Language", "en");
var response1 = await client.SendAsync(request1);
Console.WriteLine("Erste response2 " + response1.StatusCode);
}
}
编辑:
所以是这样的? @padeso
var newLang = {{language: 'en-US'}};
Object.defineProperty(navigator, 'language', {{ value: newLang.language, configurable: true }});
Object.defineProperty(navigator, 'languages', {{ get: () => [newLang.language], configurable: true }});