ASP.NET Core之多语言配置
2023-09-14 08:57:23 时间
介绍
支持多语言使网站可以覆盖更广泛的受众。 ASP.NET Core 提供的服务和中间件可将网站本地化为不同的语言。
本次示例环境:vs2019、net5
配置
无需引用Nuget包即可实现以下功能。
注入容器
services.AddLocalization(t =>
{
t.ResourcesPath = "Language";
});
启用配置
var supportedCultures = new List<CultureInfo>()
{
new CultureInfo("zh-CN"),
new CultureInfo("en-US")
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
//这里指定默认语言包
DefaultRequestCulture = new RequestCulture("en-US"),//为了测试配置默认语言英文
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
语言配置文件
需要在根目录新建一个文件夹,文件夹名字就是ResourcesPath的名字。资源文件(resx结尾)存放路径需要和使用的地方目录结构一致。(右键文件夹>添加>新建项)
image-20210511223406104
语言包下的目录结构和MVC对应,控制器对应控制器,视图对应视图。资源文件命名方式为使用文件的文件名称加上语言代码。
image.png
读取资源文件
在控制器中使用,依赖注入资源文件
[ApiController]
[Route("[controller]")]
public class HomeController : ControllerBase
{
private readonly IStringLocalizer<HomeController> _localizer;
public HomeController(IStringLocalizer<HomeController> localizer)
{
_localizer = localizer;
}
[HttpGet]
public string Get()
{
return _localizer["succeed"].Value;//如果找不到succeed的本地化值,那么就返回字符串“succeed”
}
}
测试
有多种方法可以告诉程序需要使用哪一个语言文件,下面只说常见的使用,还支持自定义 。
默认输出
HTTP报文
和常见的请求一样添加Accept-Language请求头即可
Accept-Language:zh-CN
Cookie
默认使用cookie名称.AspNetCore.Culture,值是
c=zh-CN|uic=zh-CN
c=zh-CN
uic=zh-CN
c是Culture,uic是UICulture
URL参数
三种写法,效果一样
?culture=zh-CN&ui-culture=zh-CN
?culture=zh-CN
?ui-culture=zh-CN
参考文档
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/localization?view=aspnetcore-5.0
相关文章
- ASP .Net Core系统部署到SUSE 16 Linux Enterprise Server 12 SP2 64 具体方案
- ASP.NET Core 上传大文件无法接收的问题
- ASP.NET Core Module overview模块概述
- ASP.NET 页生命周期概述
- ASP.NET Core微服务架构之Ocelot从基础入门到实战
- ASP.NET Core WebAPI基于IdentityServer4实现Token令牌身份认证
- ASP.NET WebApi服务接口如何防止重复请求实现HTTP幂等性
- ASP.NET MVC 数据传递 控制器向视图传递
- 【ASP.NET Core】依赖注入高级玩法——如何注入多个服务实现类
- asp.net core 读取Appsettings.json 配置文件
- ASP.NET Core 6框架揭秘实例演示[34]:缓存整个响应内容
- ASP.NET Core 6框架揭秘实例演示[24]:中间件的多种定义方式
- ASP.NET Core应用基本编程模式[1]:管道式的请求处理
- [ASP.NET Core 3框架揭秘] 配置[2]:读取配置数据[下篇]
- [ASP.NET Core 3框架揭秘] 依赖注入[7]:服务消费
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
- TechEmpower最新一轮的性能测试出炉,ASP.NET Core依旧表现不俗
- [文章汇总]ASP.NET Core框架揭秘[最近更新:2018/10/31]
- ASP.NET Core中的project.json何去何从?
- ASP.NET Core 中的依赖注入 [共7篇]
- ASP.NET Zero 11.1.0
- ASP.NET Web Pages - Chart 帮助器
- ASP.NET Web Forms - 母版页
- ASP.NET Core微服务(六)——【redis命令详细列表1】
- ASP.NET常见内置对象(一)
- 用ASP.NET Core MVC 和 EF Core 构建Web应用 (一)
- Asp.Net Core报错System.Text.Json.JsonException
- ASP.NET之导出Excel——无乱码现象