.net core 实现基于 JSON 的实现多语言

Intro

上次我们提到了,微软默认提供基于资源文件的多语言本地化,个人感觉使用起来不是太方便,没有 json 看起来直观,于是动手造了一个轮子, dotnet core 基于 json 的本地化组件

GetStarted

需要引用 nuget 包 WeihanLi.Extensions.Localization.Json

注册服务:

services.AddJsonLocalization(options =>{options.ResourcesPath = Configuration.GetAppSetting("ResourcesPath");options.ResourcesPathType = ResourcesPathType.TypeBased; // 默认方式和微软找资源的方式类似// options.ResourcesPathType = ResourcesPathType.CultureBased; // 在对应的 culture 子目录下寻找资源文件,可以参考后面的示例});

中间件配置(如果是asp.net core,和之前一样):

app.UseRequestLocalization();

That's it~

添加你的资源文件

TypeBased 资源文件的路径

For Types:

Home/Index => Controllers/HomeController

资源路径:

  • [ResourcesPath]/Controllers/HomeController.[cultureName].json

示例:

  • Resources/Controllers/HomeController.en.json

  • Resources/Controllers/HomeController.zh.json

For Razor 视图:

示例:

  • Resources/Views/Home/Index.en.json

  • Resources/Views/Home/Index.zh.json

CultureBased 资源文件路径

For Types:

Home/Index => Controllers/HomeController

资源路径:

  • [ResourcesPath]/[cultureName]/Controllers/HomeController.json

示例:

  • Resources/en/Controllers/HomeController.json

  • Resources/zh/Controllers/HomeController.json

For Razor 视图:

示例:

  • Resources/en/Views/Home/Index.json

  • Resources/zh/Views/Home/Index.json

Copy your resource files to output:

需要设置将资源文件拷贝到输出目录,否则会找不到资源文件,可以在启动项目项目文件中加入以下示例代码:

<ItemGroup>
<Content Update="Resources\**\*.json"><CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>

上面的配置会将 Resources 目录下的所有 json 文件拷贝到输出目录下,可以根据自己的需要进行修改

Use

用法和之前是一样的

Controller 示例:

public class ValuesController : Controller
{private readonly IStringLocalizer<ValuesController> _localizer;public ValuesController(IStringLocalizer<ValuesController> localizer){_localizer = localizer;}// GET: api/<controller>[HttpGet]public string Get(){return _localizer["Culture"];}
}

Razor 视图示例:

@using Microsoft.AspNetCore.Mvc.Localization
@using Microsoft.Extensions.Localization
@using WeihanLi.Extensions.Localization.Json.Sample.Controllers
@inject IHtmlLocalizer<HomeController> HtmlLocalizer
@inject IStringLocalizer<HomeController> StringLocalizer
@inject IViewLocalizer ViewLocalizer
@{ViewData["Title"] = "Index";
}
<h2>Index</h2>
<div>string: @StringLocalizer["Hello"]</div>
<div>html: @HtmlLocalizer["Hello"]</div>
<div>view: @ViewLocalizer["Hello"]</div>

资源文件示例:

{"Culture": "中文"
}

Samples

  • AspNetCore3.1 Basic Sample

  • ActivityReservation

.net core 实现基于 JSON 的多语言相关推荐

  1. gRPC in ASP.NET Core 3.x -- Protocol Buffer, Go语言的例子(下)

    前两篇文章半年前写的: gRPC in ASP.NET Core 3.0 -- Protocol Buffer(1), gRPC in ASP.NET Core 3.0 -- Protocol Buf ...

  2. 如何在ASP.NET Core中使用JSON Patch

    原文: JSON Patch With ASP.NET Core 作者:.NET Core Tutorials 译文:如何在ASP.NET Core中使用JSON Patch 地址:https://w ...

  3. 使用基于JSON的实体在C#中缓存远程数据

    从GitHub下载最新消息 介绍 除了查询基于JSON / REST的远程服务的简洁方法之外,您通常还需要一种方法来缓存和索引您获取的数据.这对于Web服务尤为重要,因为它们的性质,以及连接服务的延迟 ...

  4. asp英语是什么意思_如何在ASP.NET Core中使用JSON Patch

    原文: JSON Patch With ASP.NET Core 作者:.NET Core Tutorials 译文:如何在ASP.NET Core中使用JSON Patch 地址:https://w ...

  5. 基于JSON数据交换模型的实时支付系统设计和实现

    随着支付行业向各类便民账单服务.金融服务类扩展,支付内核采用固定格式数据交换模型已不能适应快速灵活开发的需要.以JSON为基础构建精简3层数据交换模型,并对JSON内存分配管理.键值使用进行优化,实现 ...

  6. Asp.Net Core 之 appsettings.json

    Asp.Net Core 之 appsettings.json 原文:Asp.Net Core 之 appsettings.json appsettings.json是什么? 相信大家在.Net Fr ...

  7. 共阳极数码时钟c语言程序,基于51单片机C语言数字钟程序.doc

    基于51单片机C语言数字钟程序 基于51单片机C语言数字钟程序 数字电子钟的设计 一. 绪论 (一)引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地 ...

  8. c语言五子棋代码_基于控制台的C语言贪吃蛇

    相信对很多人来说,学完C语言以后,都会找一些小程序来练练手.例如贪吃蛇.五子棋.俄罗斯方块等等. 今天给大家分享一个基于控制台的C语言贪吃蛇小程序. 基础知识要求:C语言基础. 知识点补充 这里写一些 ...

  9. ASP.NET Core 实现基于 ApiKey 的认证

    ASP.NET Core 实现基于 ApiKey 的认证 Intro 之前我们有介绍过实现基于请求头的认证,今天来实现一个基于 ApiKey 的认证方式,使用方式参见下面的示例 Sample 注册认证 ...

最新文章

  1. 注意力机制的本质中文版代码
  2. 浅谈AJAX并实现使用pagehelper-5.1.10.jar分页插件实现异步从数据库中获取数据分页显示
  3. python多线程编程_Python 多线程编程
  4. Uoj 441 保卫王国
  5. 能代表个人水平的c语言程序,求全国高等学校计算机水平考试级C程序设计的免费..._报关水平_帮考网...
  6. [Linux] Linux命令之pstree - 以树状图显示进程间的关系
  7. 大数据 | 致敬科比的篮球生涯。
  8. 【jvm】8-垃圾回收
  9. 硬件茶谈(B站up主爱上半导体)
  10. 用 Flask 来写个轻博客 (1) — 创建项目
  11. CSDN编程挑战赛第六期—参赛心得+题解
  12. 知到网课艺术中国真题题库分享(含答案)
  13. VirtualLab基础实验教程-2.牛顿环
  14. 模拟如何渲染100000条数据
  15. Linux网络学习第七部分:ip协议+数据链路层详解
  16. pmp练习题及答案解析
  17. 调用百度地图只显示网格的问题
  18. Ubuntu 安装 wine (使用windows下软件)
  19. j-link使用(持续更新)
  20. 怎样获取波形的波峰波谷

热门文章

  1. 计时器小程序——由浅入深实例讲解
  2. 在Windows Live Writer中插入C# code
  3. Technical User Stories – What, When, and How?
  4. .NET平台下几种SOCKET模型的简要性能供参考
  5. mysql 删除5天前 备份_mysql自动备份删除5天前的备份
  6. 如何在Windows 7、8、10,Vista或XP中删除Windows服务
  7. Ethereum-EIPs
  8. CLIENT系列、OFFSET系列、SCROLL系列
  9. Hadoop/HDFS命令
  10. 初学者必看的文章:在VM12中安装 RedHat RHEL7.2  系统的详细步骤:看我如何操纵RHEL系统...