Blazor国际化核心是识别多语言环境并正确显示文本、日期等,需注册本地化服务、配置文化支持、准备资源文件、注入本地化器使用文本、实现运行时切换语言。
Blazor 实现国际化(i18n)和本地化(l10n)核心是两件事:让应用能识别多种语言环境,再把界面文本、日期、数字等按当前语言正确显示。不依赖第三方 UI 库也能做,但用 BootstrapBlazor、MudBlazor 或 Ant Design Blazor 会更省事——它们都内置了成熟方案。
无论用哪个组件库,第一步都是在 Program.cs 中注册 .NET 原生本地化服务,并声明支持的语言列表:
builder.Services.AddLocalization(),指定资源路径(如 Resources 或 Localization)AddBootstrapBlazor(options => options.DefaultCulture = "zh-CN")AddMudLocalization()AddAntDesign() 自动集成RequestLocalizationOptions,设置默认文化、支持的文化数组(如 ["en-US", "zh-CN", "fr-FR"]),并启用中间件 app.UseRequestLocalization()
资源文件是翻译内容的载体,主流方式有两种:
Localization/ 目录下en-US.json、zh-CN.json{"Components.Table": {"AddButtonText": "New"}}
Button.en-US.resx、Button.zh-CN.resxResources/Components/ 下,便于按模块管理不用硬编码字符串,而是通过注入本地化器获取动态文本:
@inject IStringLocalizer Localizer (对应 .resx)或 @inject IStringLocalizer Localizer(通用)@Localizer["SaveButton"] 或带参数:@Localizer["HelloName", userName]
Text、ConfirmContentText),且资源键匹配,就会自动翻译用户点一下就换语言,关键在于更新当前线程的 CultureInfo 并触发重绘:
LocaleProvider.SetLocale("en-US")(Ant Design)CultureInfo.CurrentCulture = new CultureInfo("fr-FR");
CultureInfo.CurrentUICulture = new CultureInfo("fr-FR");StateHasChanged() 或触发页面刷新(如跳转带 culture 参数的 
基本上就这些。重点不是堆砌配置,而是资源键统一、文化切换可靠、回退机制健全(比如 zh-CN 找不到就试 zh,再不行回 en-US)。做起来不复杂,但容易忽略缓存、路径拼写、大小写一致性这些细节。