如何检索和检查浏览器语言首选项

问题描述 投票:0回答:0

我想取回浏览器的语言偏好,在设置-语言-语言偏好中设置。我想检查语言是设置为德语还是英语。使用以下代码,我可以覆盖语言首选项并将其设置为“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 }});
c# http
© www.soinside.com 2019 - 2024. All rights reserved.