Blazor中使用RegionInfo时属性均为ISO代码的原因排查
Blazor中RegionInfo只返回ISO代码的问题解决
当你在Blazor里用RegionInfo获取国家名称却只得到ISO代码,核心原因是Blazor WebAssembly项目默认只带了最基础的全球化资源,没有加载对应地区的本地化数据,导致RegionInfo没法解析出完整名称。
具体解决步骤:
安装必需的NuGet包
确保你的项目引用了System.Globalization.Extensions,这个包是全球化功能的核心依赖,没有它RegionInfo的很多属性没法正常工作。配置项目的全球化支持
在项目的Program.cs里添加本地化配置,指定你需要支持的地区:builder.Services.AddLocalization(); var supportedCultures = new[] { "en-US", "de-DE" }; // 按需添加需要的地区代码 builder.Services.Configure<RequestLocalizationOptions>(options => { options.DefaultRequestCulture = new RequestCulture("en-US"); options.SupportedCultures = supportedCultures.Select(c => new CultureInfo(c)).ToList(); options.SupportedUICultures = supportedCultures.Select(c => new CultureInfo(c)).ToList(); });确保加载全球化数据
打开项目的.csproj文件,添加以下配置,让Blazor WASM加载所需的地区数据:<PropertyGroup> <!-- 加载所有全球化数据,适合测试或小项目 --> <BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData> <!-- 如果想缩小包体积,可指定具体支持的地区 --> <!-- <SupportedCultures>de,en</SupportedCultures> --> </PropertyGroup>
做完这些配置后,重新运行项目,你的代码:
// User.Country = "DE" RegionInfo region = new RegionInfo(User.Country); _country = region.EnglishName;
就能正常返回"Germany"这类国家名称,而不是ISO代码了。
内容的提问来源于stack exchange,提问作者Avalari
相关产品推荐
相关产品推荐

