介绍

支持多语言使网站可以覆盖更广泛的受众。 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”
        }
    }

测试

有多种方法可以告诉程序需要使用哪一个语言文件,下面只说常见的使用,还支持自定义 。

默认输出


image.png

HTTP报文

和常见的请求一样添加Accept-Language请求头即可

Accept-Language:zh-CN

image.png

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

image.png

参考文档

https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/localization?view=aspnetcore-5.0

微信公众号

.Net之多语言配置的更多相关文章

  1. ABP实战--修改语言配置XML至Json

    从ABP官网下载的Zero的多语言配置默认是使用XML文件的,实际使用中XML是没有Json简洁明了的,所以我们将其修改为Json格式. 修改MyLocalizationConfigurer.cs文件 ...

  2. 学习GO第一天,自我感觉可麻利的开干了-GO语言配置、开发、服务器部署

    学习GO第一天,自我感觉可麻利的开干了-GO语言配置.开发.服务器部署 第一步下载 go sdk https://golang.org/dl/ https://storage.googleapis.c ...

  3. ABP进阶教程5 - 多语言配置

    点这里进入ABP进阶教程目录 更新脚本 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\Course\Index.js //用以存放Cours ...

  4. linux GO语言配置安装

    1.下载地址 https://golang.org/dl/ 2.解压 解压到/usr/local/go目录下 cd /usr/local/go bin/go version 执行如上命令出现go的版本 ...

  5. vue及vant框架,多语言配置

    1.安装 vue-i18n,( cnpm install vue-i18n --save ) 2.在入口,main.js 中引入 (import Vuei18n from "vue-i18n ...

  6. Yii 2.x 多主题 - 多语言 配置

    语言:只要在原来模板的位置建立语言目录 多主题:要重新定义模板的根目录

  7. 多语言配置--LogisticsPlatform物流平台系统

    先看:LanguageProvider.cs   中几个主要方法 1.读取默认语言 附user.ini文件: 2.获取语言类型 附LanguageType.xml 3.读取语言资源 附:   看ILa ...

  8. 转: ASP.NET MVC 多语言配置

    步骤1:打开VS2015新建测试项目. 步骤2:创建资源文件 App_GlobalResources下.    Resource1.resx    Resource1.zh-cn.resx   步骤3 ...

  9. pycharm 语言配置

    在pycharm 安装所在位置找到 lib 文件夹 打开后找到 rescources_**.jar 文件 **为语言类型,英语为en 中文为cn, 用相应语言文件替换,便可变成相应语言 https:/ ...

  10. Go语言配置与开发环境配置

    1.首先下载go的运行时 http://golang.org/dl/  下载windows 的zip版本,解压到硬盘上的一个位置 2.设置环境变量如下 GOBIN %GOROOT%\bin //go的 ...

随机推荐

  1. golang: 模仿 VictoriaMetrics 中的做法,通过把局部变量放在自定义 Context 对象中来做到hot path 的 0 alloc

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 使用 benchmark 压测过程中通常会出现这样的信息: ...

  2. windowsbat命令大全

    Bat文件的创建及其命令大全 一.bat文件的创建 新建txt文本文件 向文本文件中输入命令 保存并修改文本文件后缀为.bat 双击保存后的bat文件,运行 二.bat命令大全 echo 和 @ @ ...

  3. 物联网浏览器(IoTBrowser)-电子秤模块及二次驱动开发

    本章介绍电子秤模块的示例功能以及二次开发称重驱动的代码,二次开发以顶尖OS2型号驱动为示例,实现方式与物联网浏览器(IoTBrowser)-顶尖OS2电子秤协议实现类似,不同的是电子秤只需要采集重量不 ...

  4. C/C++ 常见数组排序算法

    本文介绍了几种常见的排序算法的实现,包括冒泡排序.选择排序.插入排序.希尔排序.归并排序和快速排序.冒泡排序通过多次遍历数组,比较并交换相邻元素,逐步将较小元素"浮"到数组顶端,时 ...

  5. 4.1 C++ Boost 字符串处理库

    Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量.可移植.高效的C应用程序.Boost库可以作为标准C库的后备,通常被称为准标准 ...

  6. 构建Keepalived高可用集群

    Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作 ...

  7. 设置两个Chrome浏览器 一个正常使用 一个无图片版

    添加两个Chrome浏览器 双击打开Chrome浏览器,点击右上角头像,点击添加 选择"在不登录帐号的情况下继续",创建一个名字,选个配色,勾选下面的创建桌面快捷方式 此时会打开一 ...

  8. Docker从认识到实践再到底层原理(二-3)|LXC容器

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...

  9. 内存池是什么原理?|内存池简易模拟实现|为学习高并发内存池tcmalloc做准备

    前言 那么这里博主先安利一些干货满满的专栏了! 这两个都是博主在学习Linux操作系统过程中的记录,希望对大家的学习有帮助! 操作系统Operating Syshttps://blog.csdn.ne ...

  10. Proxmox的local-lvm改文件存储,提升运行速度

    介绍 Proxmox的缺省安装会创建 local 和 local-lvm 两个存储.其中local大约磁盘容量的10%,存储类别为目录. local-lvm的存储类别为 lvm-thin. 实际使用中 ...