当前位置:首页 > C# > 正文

ASP.NET Core本地化详解(手把手教你实现请求级别的多语言支持)

在当今全球化应用开发中,ASP.NET Core本地化 是一个不可或缺的功能。它允许你的 Web 应用根据用户的语言偏好动态显示不同语言的内容。本教程将从零开始,一步步带你配置和使用 请求本地化 功能,即使你是编程小白也能轻松上手!

ASP.NET Core本地化详解(手把手教你实现请求级别的多语言支持) Core本地化 请求本地化 多语言支持 .NET Core国际化 第1张

什么是请求本地化?

请求本地化是指在每次 HTTP 请求到达时,系统根据用户浏览器设置、URL 参数或 Cookie 等信息自动确定应使用的语言文化(如 zh-CN、en-US),并据此加载对应的资源文件(如 .resx 文件),从而实现多语言支持

第一步:创建 ASP.NET Core 项目

首先,确保你已安装 .NET SDK。打开终端,运行以下命令创建一个新项目:

dotnet new webapp -n LocalizationDemo

第二步:配置服务以启用本地化

打开 Program.cs 文件(如果你使用的是 .NET 6+),添加本地化相关服务:

using Microsoft.AspNetCore.Localization;using System.Globalization;var builder = WebApplication.CreateBuilder(args);// 添加本地化服务builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");// 配置支持的语言var supportedCultures = new[] { "zh-CN", "en-US" };var localizationOptions = new RequestLocalizationOptions()    .SetDefaultCulture(supportedCultures[0])    .AddSupportedCultures(supportedCultures)    .AddSupportedUICultures(supportedCultures);builder.Services.Configure<RequestLocalizationOptions>(options =>{    options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("zh-CN");    options.SupportedCultures = supportedCultures.Select(c => new CultureInfo(c)).ToList();    options.SupportedUICultures = supportedCultures.Select(c => new CultureInfo(c)).ToList();});var app = builder.Build();// 启用请求本地化中间件app.UseRequestLocalization(localizationOptions);app.MapRazorPages();app.Run();

这段代码做了三件事:

  • 注册本地化服务,并指定资源文件存放路径为 Resources 文件夹。
  • 定义支持的语言(中文简体和美式英语)。
  • 配置 RequestLocalizationMiddleware 中间件,在每次请求时自动识别用户语言。

第三步:创建资源文件

在项目根目录下创建 Resources 文件夹,然后添加以下两个资源文件:

  • SharedResource.zh-CN.resx(中文资源)
  • SharedResource.en-US.resx(英文资源)

每个文件中添加相同的键,例如 WelcomeMessage,但值不同:

  • 中文文件:WelcomeMessage → 欢迎使用我们的网站!
  • 英文文件:WelcomeMessage → Welcome to our website!

第四步:在 Razor 页面中使用本地化

打开 Pages/Index.cshtml,注入本地化服务并使用:

@using Microsoft.Extensions.Localization@inject IStringLocalizer<SharedResource> Localizer<h2>@Localizer["WelcomeMessage"]</h2>

现在,当你访问首页时,系统会根据浏览器语言自动显示对应语言的欢迎语。

第五步:测试不同语言(可选)

你可以通过 URL 查询字符串强制切换语言,例如:

  • https://localhost:5001/?culture=zh-CN
  • https://localhost:5001/?culture=en-US

这得益于 ASP.NET Core 内置的 QueryStringRequestCultureProvider 提供器。

总结

通过以上步骤,你已经成功实现了 .NET Core国际化多语言支持。ASP.NET Core 的本地化机制灵活且强大,适用于各种复杂场景。无论是企业级应用还是个人项目,掌握这项技能都将大大提升你的开发能力。

记住,良好的本地化体验不仅能提升用户满意度,还能帮助你的产品走向全球市场。赶快动手试试吧!