详解ASP.NET Core 中的多语言支持(Localization)

发布时间 - 2026-01-11 03:01:43    点击率:

首先在 Startup 的 ConfigureServices 中添加 AddLocalization 与 AddViewLocalization 以及配置 RequestLocalizationOptions (这里假设使用英文与中文):

public void ConfigureServices(IServiceCollection services)
{
  services.AddLocalization(options => options.ResourcesPath = "Resources");

  services.AddMvc()
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);

  services.Configure<RequestLocalizationOptions>(
    opts =>
    {
      var supportedCultures = new List<CultureInfo>
      {
        new CultureInfo("en-US"),
        new CultureInfo("zh-CN")
      };
      opts.SupportedCultures = supportedCultures;
      opts.SupportedUICultures = supportedCultures;
    });
}

在 Startup 的 Configure() 方法中应用 RequestLocalizationOptions :

var requestLocalizationOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>().Value;
app.UseRequestLocalization(requestLocalizationOptions);

然后在 _Layout.cshtml 视图中通过 IViewLocalizer 接口以多语言的方式显示页面标题的后缀:

@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
<!DOCTYPE html>
<html>
<head>
  <title>@ViewData["Title"] - @Localizer["SiteTitle"]</title>
</head>
<body>
</body>
</html>

接着在 ASP.NET Core Web 项目中创建 Resources 文件夹,在其中分别添加 Views.Shared._Layout.en-Us.resx 与 Views.Shared._Layout.zh-CN.resx 文件, Views.Shared._Layout.resx 文件,并添加 "SiteTitle" 所对应的语句文字:

1)Views.Shared._Layout.en-Us.resx

2)Views.Shared._Layout.zh-CN.resx

这时运行 ASP.NET Core 站点,就会根据浏览器的语言设置(Accept-Language header)、或者 culture 查询参数、或者 .AspNetCore.Culture Cookie 值显示对应语言的文字:

需要注意的地方:千万不要添加不带语言名称的 Views.Shared._Layout.en-Us.resx ,不然添加代码语言名称的 .resx 文件时会遇到  "Custom tool ResXFileCodeGenerator failed to produce an output for input file ... but did not log a specific error." 问。

一定要看的参考文档:Globalization and localization 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# asp.net  # core  # 多语言  # Asp.Net Core MVC项目实现多语言实例(Globalization/Localizati  # ASP.NET Core MVC 中实现中英文切换的示例代码  # 就会  # 英文  # 千万不要  # 不带  # 需要注意  # 大家多多  # 一定要看  # 所对应  # 文档  # zh  # en  # SupportedCultures  # CN  # var  # opts 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 网站制作大概多少钱一个,做一个平台网站大概多少钱?  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  PHP 500报错的快速解决方法  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  如何在阿里云通过域名搭建网站?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  Android自定义控件实现温度旋转按钮效果  Laravel怎么调用外部API_Laravel Http Client客户端使用  装修招标网站设计制作流程,装修招标流程?  Laravel怎么实现验证码(Captcha)功能  如何快速打造个性化非模板自助建站?  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  Laravel如何创建自定义中间件?(Middleware代码示例)  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  如何快速完成中国万网建站详细流程?  🚀拖拽式CMS建站能否实现高效与个性化并存?  Java类加载基本过程详细介绍  如何用好域名打造高点击率的自主建站?  如何快速生成凡客建站的专业级图册?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  高端智能建站公司优选:品牌定制与SEO优化一站式服务  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  怎么用AI帮你设计一套个性化的手机App图标?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  音响网站制作视频教程,隆霸音响官方网站?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  详解vue.js组件化开发实践  python中快速进行多个字符替换的方法小结  Laravel如何处理和验证JSON类型的数据库字段  北京的网站制作公司有哪些,哪个视频网站最好?  网站页面设计需要考虑到这些问题  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  高防服务器租用如何选择配置与防御等级?  微信小程序 五星评分(包括半颗星评分)实例代码  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Python文件操作最佳实践_稳定性说明【指导】  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  JavaScript模板引擎Template.js使用详解  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Bootstrap整体框架之CSS12栅格系统  用yum安装MySQLdb模块的步骤方法  EditPlus中的正则表达式 实战(4)  佛山网站制作系统,佛山企业变更地址网上办理步骤?  b2c电商网站制作流程,b2c水平综合的电商平台?  如何快速登录WAP自助建站平台?  如何快速查询网站的真实建站时间?  如何挑选最适合建站的高性能VPS主机?