.NET Core WebApi 多语言本地化,动态切换多语言
.NET Core WebApi 多语言本地化,动态切换多语言
原生的.net core webapi 动态多语言本地话
具体更多详细内容,可以参考官方文档
首先看效果图
整体项目结构图
开始前需要讲一些重要的点
1.是通过文件命名空间的路径去找寻的,比如 Resource.cs 是在和多语言Resource.xxxx.resx文件同一级别的
2.参考下图,不然多语言翻译时是找寻不到的

ConfigureServices里面进行以下配置
services.AddLocalization();
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("en-US"),//英文
new CultureInfo("zh-Hans"),//简体中文
new CultureInfo("zh-Hant")//繁体中文-台湾
}; options.DefaultRequestCulture = new RequestCulture(culture: "en-US", uiCulture: "en-US");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders = new List<IRequestCultureProvider> { new CultureRequestCultureProvider() };
});
Configure下加入如下代码
//多语言配置
var localizeOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(localizeOptions.Value);
其中关键的 CultureRequestCultureProvider.cs 代码内容如下 (通过HttpContext 的Headers 传参 Accept-Language来实现动态切换语言的)
public class CultureRequestCultureProvider : RequestCultureProvider
{
public override Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
{
if (httpContext == null)
{
throw new ArgumentNullException();
} #region 方式一从Cookies里面按需获取语言 注释
//var CULTURE_String = "CULTURE";
//var CultureValue = httpContext.Request.Cookies[CULTURE_String]?.ToString() ?? "";
//if (string.IsNullOrWhiteSpace(CultureValue))
//{
// CultureValue = "zh-Hans";
// httpContext.Response.Cookies.Append(key: CULTURE_String, value: CultureValue, options: new CookieOptions() { Expires = DateTime.Now.AddYears(1) });
//}
#endregion //方式二 从Headers里面按需获取语言
var culture = new StringSegment("zh-Hans");
var uiCulture = new StringSegment("zh-Hans");
var lang = httpContext.Request.Headers["Accept-Language"].ToString() ?? "";
switch (lang)
{
case "en-US":
//英文
culture = new StringSegment("en-US");
uiCulture = new StringSegment("en-US");
break;
case "zh-Hans":
//简体中文
culture = new StringSegment("zh-Hans");
uiCulture = new StringSegment("zh-Hans");
break;
case "zh-Hant":
//繁体中文-台湾
culture = new StringSegment("zh-Hant");
uiCulture = new StringSegment("zh-Hant");
break;
default:
goto case "zh-Hans";
}
return Task.FromResult(new ProviderCultureResult(culture, uiCulture));
}
}
Resource.cs 以及多语言文件的代码如下
namespace DynamicMultilanguage.Localize
{
public class Resource
{
}
}



在控制器里面使用时
private readonly IStringLocalizer<Resource> _localizer; public HomeController(IStringLocalizer<Resource> localizer)
{
_localizer = localizer;
} [HttpGet]
public object Get()
{
var culturesValue = _localizer["Home"];
var culturesValueParams = _localizer["HomeTitie", "雨太阳", "66666"]; return new { culturesValue, culturesValueParams };
}
按照以上操作,一个简答的WebApi的多语言切换已经完成了
.NET Core WebApi 多语言本地化,动态切换多语言的更多相关文章
- SAAS云平台搭建札记: (三) AntDesign + .Net Core WebAPI权限控制、动态菜单的生成
我们知道,当下最火的前端框架,非蚂蚁金服的AntDesign莫属,这个框架不仅在国内非常有名,在国外GitHub上React前端框架也排名第一.而且这个框架涵盖了React.Vue.Angular等多 ...
- WPF实现无刷新动态切换多语言(国际化)
1. 在WPF中国际化使用的是 .xaml文件的格式 如图:Resource Dictionary (WPF) 2. 创建默认的语言文件和其他语言文件 这里以英语为默认语言,新建一个 Resource ...
- QT国际化示例, 检测系统语言,设置适合语言,按键切换显示语言
1.效果如下图,开启就自动检测系统语言,选择系统语言显示, UI有控件设置,在中文和英文之间切换.. 2. 源码 dialog.h #ifndef DIALOG_H #define DIALOG_H ...
- iOS - 实现语言本地化/国际化
实现iOS语言本地化/国际化(图文详解) 前言 语言本地化,又叫做语言国际化.是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言.往往一些应用程序需要提供给多个 ...
- 3分钟实现iOS语言本地化/国际化(图文详解)
前言 语言本地化,又叫做语言国际化. 是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言. 往往一些应用程序需要提供给多个国家的人群使用,或者一个国家有多种语言,这 ...
- c#: 界面多语言动态切换简单实现
终于有空整理下多语言实现思路.查阅已有方案,有用不同resx文件的,有每个控件动态设置的,有用反射去整的,颇为繁琐. 结合项目中实现方法,并做简化,实现通用的多语言切换方案,以做备忘. 它支持语言自定 ...
- ASP.NET Core 奇淫技巧之动态WebApi
一.前言 接触到动态WebApi(Dynamic Web API)这个词的已有几年,是从ABP框架里面接触到的,当时便对ABP的这个技术很好奇,后面分析了一波,也尝试过从ABP剥离一个出来作为独立组件 ...
- WPF 界面实现多语言支持 中英文切换 动态加载资源字典
1.使用资源字典,首先新建两个字典文件en-us.xaml.zh-cn.xaml.定义中英文的字符串在这里面[注意:添加xmlns:s="clr-namespace:System;assem ...
- ASP.NET Core 3.0中使用动态控制器路由
原文:Dynamic controller routing in ASP.NET Core 3.0 作者:Filip W 译文:https://www.cnblogs.com/lwqlun/p/114 ...
- 将 ASP.Net Core WebApi 应用打包至 Docker 镜像
将 ASP.Net Core WebApi 应用打包至 Docker 镜像 运行环境为 Windows 10 专业版 21H1, Docker Desktop 3.6.0(67351),Docker ...
随机推荐
- junit使用mock objects进行单元测试
上一篇我介绍了使用stub进行单元测试.那么mock objects和stub有何区别?什么情况下使用mock objects呢? 下面摘自junit in action书中的解释: mock obj ...
- ghost方式批量安装win7
1. 需求介绍: 最近工作中需要给几百台PC安装win7操作系统,同时需要安装系统驱动和一些办公软件.刚开始是使用U盘制作的win7启动盘安装,发现效率太低,因为中间需要人监控安装进度以待安装好系 ...
- Auxiliary Set题解
F Auxiliary Set 树上LCA + DFS 注意一下输出格式! #include<bits/stdc++.h> using namespace std; const int N ...
- ZYNQ核心板及其底板开源啦!
Hello-FPGA ZYNQ 设计开源啦! 开源ZYNQ核心板 + 底板 硬件设计.软件设计,软件设计使用裸机演示,演示了如何使用AXI DMA等关键dma 模块 欢迎加QQ 讨论 94755958 ...
- 亲测可用,ChatGPT 对话技巧
"Linux终端" "我希望你充当一个 linux 终端.我会输入命令,你会回复终端应该显示的内容.我希望你只回复一个唯一代码块内的终端输出,没有别的.不要写解释.除 ...
- ubuntu22.04安装配置redis
本操作在虚拟机上 安装Redis 1)更新系统 sudo apt update sudo apt upgrade 2)安装Redis sudo apt install redis-server 3)测 ...
- 15. JVM垃圾回收器详解
1. 垃圾回收器的分类 和 GC性能指标 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商.不同版本的JVM来实现. 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC ...
- Android的BLE广播数据包解析---Android系列, 蓝牙技术(含BLE)
一.引言 理解和分析这个数据包结构(这里面也涉及广播间隔时间的设置,设备广播数据间隔设置长了,会影响设备被发现的效率:设置短时,又响应功耗). 我们所说的BLE设备,其实是有区分有两种角色 Centr ...
- 2、hystrix原理
hystrix熔断机制 1.隔离机制 线程隔离: Hystrix在用户请求和服务之间加入了线程池. Hystrix为每个依赖调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队.加速 ...
- 9、mysql的并发参数调整
从实现上来说,MySQL Server 是多线程结构,包括后台线程和客户服务线程.多线程可以有效利用服务器资源,提高数据库的并发性能.在Mysql中,控制并发连接和线程的主要参数包括 max_conn ...

