如何在Blazor中通过命令自动生成IStringLocalizer对应的多语言resx文件?
自动生成Blazor IStringLocalizer多语言Resx文件的方法
可以通过官方工具或社区工具实现命令行自动生成对应语言的Resx文件,以下是具体方案:
一、使用.NET官方内置命令(.NET 6+推荐)
.NET 6及以上版本提供了dotnet extract命令,可自动扫描项目中所有IStringLocalizer的调用,提取待翻译字符串并生成对应语言的Resx文件。
操作步骤:
- 确保项目已配置本地化基础支持(在Program.cs中添加):
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); // 配置需要支持的目标语言 var supportedCultures = new[] { "en", "de" }; builder.Services.Configure<RequestLocalizationOptions>(options => { options.DefaultRequestCulture = new RequestCulture("en"); options.SupportedCultures = supportedCultures.Select(c => new CultureInfo(c)).ToList(); options.SupportedUICultures = options.SupportedCultures; });
- 打开开发者命令提示符,进入项目根目录,执行以下命令生成对应语言的Resx文件:
# 生成英文Resx文件 dotnet extract --output Resources --culture en # 生成德文Resx文件 dotnet extract --output Resources --culture de
执行后,工具会自动扫描项目中所有_localizer["XXX"]格式的调用,生成Resources/MyPage.en.resx、Resources/MyPage.de.resx这类文件,提取到的原文字符串会作为默认值填充到Resx中,后续只需修改翻译内容即可。
二、低版本.NET的替代方案(.NET 5及以下)
如果项目基于.NET 5或更低版本,可使用社区工具ResXManager的命令行版本实现自动生成:
- 安装ResXManager命令行工具:
dotnet tool install -g ResXManager.CommandLine
- 执行命令扫描并生成Resx文件:
resxmanager export --source . --output Resources --cultures en,de --pattern "*.razor"
该工具会遍历项目中的Razor文件,识别IStringLocalizer的调用,生成对应语言的Resx文件。
注意事项
- 确保页面中
@inject IStringLocalizer<MyPage> _localizer的泛型参数MyPage与页面类名一致,工具才能正确关联对应的Resx文件。 - 生成的Resx文件会自动放在配置的
Resources目录下,需确保该目录已存在。
内容的提问来源于stack exchange,提问作者user3079834
相关产品推荐
相关产品推荐

