.NET Core WebApi 多语言本地化,动态切换多语言
  1. 原生的.net core webapi 动态多语言本地话

    • 具体更多详细内容,可以参考官方文档

    • 首先看效果图

    • 整体项目结构图

    • 开始前需要讲一些重要的点

      • 1.是通过文件命名空间的路径去找寻的,比如 Resource.cs 是在和多语言Resource.xxxx.resx文件同一级别的
        2.参考下图,不然多语言翻译时是找寻不到的

  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() };
    });
  3. Configure下加入如下代码

    //多语言配置
    var localizeOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
    app.UseRequestLocalization(localizeOptions.Value);
  4. 其中关键的 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));
    }
    }
  5. Resource.cs 以及多语言文件的代码如下

    namespace DynamicMultilanguage.Localize
    {
    public class Resource
    {
    }
    }

  6. 在控制器里面使用时

    		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 多语言本地化,动态切换多语言的更多相关文章

  1. SAAS云平台搭建札记: (三) AntDesign + .Net Core WebAPI权限控制、动态菜单的生成

    我们知道,当下最火的前端框架,非蚂蚁金服的AntDesign莫属,这个框架不仅在国内非常有名,在国外GitHub上React前端框架也排名第一.而且这个框架涵盖了React.Vue.Angular等多 ...

  2. WPF实现无刷新动态切换多语言(国际化)

    1. 在WPF中国际化使用的是 .xaml文件的格式 如图:Resource Dictionary (WPF) 2. 创建默认的语言文件和其他语言文件 这里以英语为默认语言,新建一个 Resource ...

  3. QT国际化示例, 检测系统语言,设置适合语言,按键切换显示语言

    1.效果如下图,开启就自动检测系统语言,选择系统语言显示, UI有控件设置,在中文和英文之间切换.. 2. 源码 dialog.h #ifndef DIALOG_H #define DIALOG_H ...

  4. iOS - 实现语言本地化/国际化

      实现iOS语言本地化/国际化(图文详解) 前言 语言本地化,又叫做语言国际化.是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言.往往一些应用程序需要提供给多个 ...

  5. 3分钟实现iOS语言本地化/国际化(图文详解)

    前言 语言本地化,又叫做语言国际化. 是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言. 往往一些应用程序需要提供给多个国家的人群使用,或者一个国家有多种语言,这 ...

  6. c#: 界面多语言动态切换简单实现

    终于有空整理下多语言实现思路.查阅已有方案,有用不同resx文件的,有每个控件动态设置的,有用反射去整的,颇为繁琐. 结合项目中实现方法,并做简化,实现通用的多语言切换方案,以做备忘. 它支持语言自定 ...

  7. ASP.NET Core 奇淫技巧之动态WebApi

    一.前言 接触到动态WebApi(Dynamic Web API)这个词的已有几年,是从ABP框架里面接触到的,当时便对ABP的这个技术很好奇,后面分析了一波,也尝试过从ABP剥离一个出来作为独立组件 ...

  8. WPF 界面实现多语言支持 中英文切换 动态加载资源字典

    1.使用资源字典,首先新建两个字典文件en-us.xaml.zh-cn.xaml.定义中英文的字符串在这里面[注意:添加xmlns:s="clr-namespace:System;assem ...

  9. ASP.NET Core 3.0中使用动态控制器路由

    原文:Dynamic controller routing in ASP.NET Core 3.0 作者:Filip W 译文:https://www.cnblogs.com/lwqlun/p/114 ...

  10. 将 ASP.Net Core WebApi 应用打包至 Docker 镜像

    将 ASP.Net Core WebApi 应用打包至 Docker 镜像 运行环境为 Windows 10 专业版 21H1, Docker Desktop 3.6.0(67351),Docker ...

随机推荐

  1. pikachu sql inject 宽字节注入

    宽字节注入原理 什么是宽字节? 如果一个字符的大小是一个字节的,称为窄字节: 如果一个字符的大小是两个字节的,成为宽字节: 像GB2312.GBK.GB18030.BIG5.Shift_JIS等这些编 ...

  2. 图书管理系统---基于ajax删除数据

    book_list.html代码 {% load static %} <!DOCTYPE html> <html lang="en"> <head&g ...

  3. CGI, FastCGI, WSGI, uWSGI, uwsgi一文搞懂

    中间件 1.服务器中间件:nginx,apache 2.数据库中间件:介于应用程序和数据库之前的,MyCat 3.消息队列中间件:kafka,rabbitmq,Rocketmq CGI 1.CGI是一 ...

  4. OpenCV计数应用 c++(QT)

    一.前言 为了挑战一下OpenCV的学习成果,最经一直在找各类项目进行实践.机缘巧合之下,得到了以下的需求: 要求从以下图片中找出所有的近似矩形的点并计数,重叠点需要拆分单独计数. 二.解题思路 1. ...

  5. 【Azure Redis】Redis导入备份文件(RDB)失败的原因

    问题描述 在测试Azure Redis的导入/导出备份文件的功能中,突然发现在Redis 4.0上导入的时候,一直报错. 问题解答 因为门户上只是显示导入失败,没有任何错误消息说明.根据常理推断,Re ...

  6. 答对这 9 题你就超越了 83.3% 的图数据库 NebulaGraph 用户

    熟悉 NebulaGraph 社区的小伙伴可能都知道一个技能认证叫做:NGCP,全称 NebulaGraph Certified Professional.用户在考试认证期间在 1 个小时内回答 10 ...

  7. 『Echarts』基本使用

    一.前言 本篇文章是『Echarts』文章的第 2 篇,主要介绍『Echarts』基本使用 在『Echarts』第 1 篇文章中,我们介绍了 Echarts 的概述及其强大的数据可视化功能.本篇将继续 ...

  8. [C++] 代码注入非dll版

    目录 前言 需要注意的问题 DLL注入和代码注入区别 代码 解决问题过程 参考 前言 昨天完成了dll注入,今天就完成了代码注入,早知道这个,就应该早点这么做. 需要注意的问题 64位程序只能注入64 ...

  9. CPNtools协议建模安全分析---实例(三)

    对于复杂的系统的建模或者协议的建模,各种颜色集的定义以及变量的声明很重要,要区分明确,对于函数行业进程的定义更加复杂.CPN对协议的描述只适合简单逻辑性的协议分析,如果协议包括复杂的算法,那么CPN就 ...

  10. Spring与微服务

    Spring与微服务 微服务论文 Melvyn Conway 的意识是,像下图所展示的,设计一个系统时,将人员划分为 UI 团队,中间件团队,DBA 团队,那么相应地,软件系统也就会自然地被划分为 U ...