You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor WASM(.NET 8)无法获取浏览器及系统区域文化问题

Blazor WASM .NET 8 无法获取浏览器/系统区域文化(en-GB)的原因及解决方法

核心原因

Blazor WASM 默认不会自动同步浏览器或系统的区域设置到 .NET 的 CultureInfo,框架默认使用 en-US 作为全局区域文化,除非你显式配置区域探测逻辑。

解决方法

1. 启用全局浏览器区域探测(推荐)

在 Program.cs 中配置本地化服务及请求中间件,让框架自动从浏览器请求头获取区域信息:

var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");

// 添加本地化服务
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");

// 配置支持的区域文化
builder.Services.Configure<RequestLocalizationOptions>(options =>
{
    var supportedCultures = new[] { "en-GB", "en-US" };
    options.DefaultRequestCulture = new RequestCulture("en-GB"); // 设置默认 fallback
    options.AddSupportedCultures(supportedCultures);
    options.AddSupportedUICultures(supportedCultures);
});

// 启用请求本地化中间件
var app = builder.Build();
app.UseRequestLocalization();

await app.RunAsync();

配置完成后,CultureInfo.CurrentCulture 会自动匹配浏览器的区域设置。

2. 手动通过 JS 互操作获取并设置区域

如果不需要全局本地化配置,可以直接通过 JS 获取浏览器区域,手动设置 CultureInfo:

@inject IJSRuntime JSRuntime
@using System.Globalization

<td class="col">@CultureInfo.CurrentCulture.Name</td>

@code {
    protected override async Task OnInitializedAsync()
    {
        // 获取浏览器语言
        var browserLang = await JSRuntime.InvokeAsync<string>("navigator.language");
        if (!string.IsNullOrWhiteSpace(browserLang))
        {
            // 处理浏览器返回的简写格式(如"en"),可根据需求映射到具体区域
            var cultureName = browserLang switch
            {
                "en" => "en-GB",
                _ => browserLang
            };
            
            CultureInfo.CurrentCulture = new CultureInfo(cultureName);
            CultureInfo.CurrentUICulture = new CultureInfo(cultureName);
        }
    }
}

若要全局生效,可将这段逻辑移到 Program.cs 的初始化阶段。

3. 排查硬编码或配置覆盖

检查项目中是否存在强制设置区域的代码,比如:

// 这类代码会覆盖自动探测的结果
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US");

同时确认 appsettings.json 中没有相关区域配置覆盖默认逻辑。

内容的提问来源于stack exchange,提问作者coolblue2000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 13:33:24