Blazor 怎么进行国际化和本地化

来源:这里教程网 时间:2026-02-21 17:40:10 作者:

Blazor 实现国际化(i18n)和本地化(l10n)核心是两件事:让应用能识别多种语言环境,再把界面文本、日期、数字等按当前语言正确显示。不依赖第三方 UI 库也能做,但用 BootstrapBlazor、MudBlazor 或 Ant Design Blazor 会更省事——它们都内置了成熟方案。

注册本地化服务并配置文化支持

无论用哪个组件库,第一步都是在 Program.cs 中注册 .NET 原生本地化服务,并声明支持的语言列表:

调用
builder.Services.AddLocalization()
,指定资源路径(如
Resources
Localization
添加对应 UI 库的本地化扩展,例如:
 • BootstrapBlazor:
AddBootstrapBlazor(options => options.DefaultCulture = "zh-CN")

 • MudBlazor:
AddMudLocalization()

 • Ant Design Blazor:
AddAntDesign()
自动集成
配置
RequestLocalizationOptions
,设置默认文化、支持的文化数组(如
["en-US", "zh-CN", "fr-FR"]
),并启用中间件
app.UseRequestLocalization()

准备多语言资源文件

资源文件是翻译内容的载体,主流方式有两种:

JSON 文件(推荐用于 BootstrapBlazor / Ant Design)
 • 放在
Localization/
目录下
 • 命名如
en-US.json
zh-CN.json

 • 结构支持嵌套键,例如:
{"Components.Table": {"AddButtonText": "New"}}
.resx 资源文件(.NET 传统方式,适合 MudBlazor 或自定义场景)
 • 按命名规范如
Button.en-US.resx
Button.zh-CN.resx

 • 可放在
Resources/Components/
下,便于按模块管理
 • Visual Studio 会自动生成强类型类,支持编译时检查

在组件中使用本地化文本

不用硬编码字符串,而是通过注入本地化器获取动态文本:

在 Razor 组件顶部注入:
@inject IStringLocalizer<mycomponent> Localizer</mycomponent>
(对应 .resx)或
@inject IStringLocalizer Localizer
(通用)
在 HTML 中直接使用:
@Localizer["SaveButton"]
或带参数:
@Localizer["HelloName", userName]
组件库自带的按钮、表格等,只要用了其标准属性(如
Text
ConfirmContentText
),且资源键匹配,就会自动翻译

运行时切换语言

用户点一下就换语言,关键在于更新当前线程的

CultureInfo
并触发重绘:

调用
LocaleProvider.SetLocale("en-US")
(Ant Design)
或手动设置:
CultureInfo.CurrentCulture = new CultureInfo("fr-FR");<br>CultureInfo.CurrentUICulture = new CultureInfo("fr-FR");
最后别忘了
StateHasChanged()
或触发页面刷新(如跳转带 culture 参数的 URL)
常见做法是加一个语言切换下拉框,选中后保存到 localStorage 或 Cookie,下次加载自动读取

基本上就这些。重点不是堆砌配置,而是资源键统一、文化切换可靠、回退机制健全(比如 zh-CN 找不到就试 zh,再不行回 en-US)。做起来不复杂,但容易忽略缓存、路径拼写、大小写一致性这些细节。

相关推荐