当前位置: 首页 > 科技观察

本文教你.Net的多语言配置

时间:2023-03-17 15:27:16 科技观察

本文转载自微信公众号“鹏翔”,作者AZRNG。转载本文请联系鹏翔公众号。首先感谢各位朋友或者技术爱好者的关注。引入对多种语言的支持可以让网站覆盖更广泛的受众。ASP.NETCore提供服务和中间件来将网站本地化为不同的语言。本例环境:vs2019,net5配置可以在不引用Nuget包的情况下实现如下功能。注入容器services.AddLocalization(t=>{t.ResourcesPath="Language";});enableconfigurationvarsupportedCultures=newList(){newCultureInfo("zh-CN"),newCultureInfo("en-US")};app.UseRequestLocalization(newRequestLocalizationOptions{//这里指定默认语言包DefaultRequestCulture=newRequestCulture("en-US"),//为了测试,配置默认语言EnglishSupportedCultures=supportedCultures,SupportedUICultures=supportedCultures});语言配置文件需要在根目录新建文件夹,文件夹名称为ResourcesPath的名称。资源文件(以resx结尾)的存放路径需要和使用地方的目录结构保持一致。(右键文件夹>添加>新建项)image.png语言包下的目录结构对应MVC,controller对应controller,view对应view。资源文件的命名方式是使用文件的文件名加上语言代码。image.png读取资源文件在控制器中使用,依赖注入资源文件[ApiController][Route([controller]")]publicclassHomeController:ControllerBase{privatereadonlyIStringLocalizer_localizer;publicHomeController(IStringLocalizerlocalizer){_localizer=localizer;}[HttpGet]publicstringGet(){return_localizer["succeed"].Value;//如果找不到succeed的本地化值,则返回字符串"succeed"}}Test有很多种方式可以告诉程序需要使用哪个语言文件,下面只说常用的用法,也支持自定义。默认输出image.pngHTTP报文,和普通请求一样,只是添加Accept-Language请求头Accept-Language:zh-CNimage.pngCookie默认使用cookie名称.AspNetCore.Culture,值为c=zh-CN|uic=zh-CNc=zh-CNuic=zh-CNc是Culture,uic是UICultureURL参数三种写法,效果是一样的?culture=zh-CN&ui-culture=zh-CN?culture=zh-CN?ui-culture=zh-CNimage.PNG参考文档https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/localization?view=aspnetcore-5.0