.NET6之MiniAPI(十一):本地化

.net开发体系里,大部分本地化的实现都是用资源文件实现(.resx),asp.net core中的多语Culture是指区域性的对象,而UICulture 该对象表示资源管理器在运行时查找区域性特定资源时所用的当前用户接口区域性。

asp.net core实现也是通过添注入本地化服务,和添加中间件来实现的,例如下:

using Microsoft.Extensions.Localization;var builder = WebApplication.CreateBuilder(args);
//添加本地化中间件,Resources
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");var app = builder.Build();
//应用三种本地化资源
var supportedCultures = new[] { "zh-CN", "ja-JP", "en-US" };
var localizationOptions = new RequestLocalizationOptions().SetDefaultCulture(supportedCultures[0]).AddSupportedCultures(supportedCultures).AddSupportedUICultures(supportedCultures);
localizationOptions.ApplyCurrentCultureToResponseHeaders = true;
app.UseRequestLocalization(localizationOptions);
//通过向服务容器中获取StringLocalizer来获取具体本地化数据
app.MapGet("/demo", (IStringLocalizer<SharedResource> sharedLocalizer) =>
{return sharedLocalizer["ok"].Value;
});app.Run();
//ShareResource类型,不需要实现
public class SharedResource
{
}

.resx文件类型

922e9a0382d1454c4176338fac2ff27d.png

.resx文档可视化界面

26b8f10b9056a27a47db67c1212c2600.png

.resx文件xml数据,分描述部分和数据部分

<?xml version="1.0" encoding="utf-8"?>
<root><!-- Microsoft ResX Schema Version 2.0The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the various data types are done through the TypeConverter classes associated with the data types.Example:... ado.net/XML headers & schema ...<resheader name="resmimetype">text/microsoft-resx</resheader><resheader name="version">2.0</resheader><resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader><resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader><data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data><data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data><data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"><value>[base64 mime encoded serialized .NET Framework object]</value></data><data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"><value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value><comment>This is a comment</comment></data>There are any number of "resheader" rows that contain simple name/value pairs.Each data row contains a name, and value. The row also contains a type or mimetype. Type corresponds to a .NET class that support text/value conversion through the TypeConverter architecture. Classes that don't support this are serialized and stored with the mimetype set.The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly:Note - application/x-microsoft.net.object.binary.base64 is the format that the ResXResourceWriter will generate, however the reader can read any of the formats listed below.mimetype: application/x-microsoft.net.object.binary.base64value   : The object must be serialized with : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter: and then encoded with base64 encoding.mimetype: application/x-microsoft.net.object.soap.base64value   : The object must be serialized with : System.Runtime.Serialization.Formatters.Soap.SoapFormatter: and then encoded with base64 encoding.mimetype: application/x-microsoft.net.object.bytearray.base64value   : The object must be serialized into a byte array : using a System.ComponentModel.TypeConverter: and then encoded with base64 encoding.--><xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"><xsd:import namespace="http://www.w3.org/XML/1998/namespace" /><xsd:element name="root" msdata:IsDataSet="true"><xsd:complexType><xsd:choice maxOccurs="unbounded"><xsd:element name="metadata"><xsd:complexType><xsd:sequence><xsd:element name="value" type="xsd:string" minOccurs="0" /></xsd:sequence><xsd:attribute name="name" use="required" type="xsd:string" /><xsd:attribute name="type" type="xsd:string" /><xsd:attribute name="mimetype" type="xsd:string" /><xsd:attribute ref="xml:space" /></xsd:complexType></xsd:element><xsd:element name="assembly"><xsd:complexType><xsd:attribute name="alias" type="xsd:string" /><xsd:attribute name="name" type="xsd:string" /></xsd:complexType></xsd:element><xsd:element name="data"><xsd:complexType><xsd:sequence><xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /><xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /></xsd:sequence><xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /><xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /><xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /><xsd:attribute ref="xml:space" /></xsd:complexType></xsd:element><xsd:element name="resheader"><xsd:complexType><xsd:sequence><xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /></xsd:sequence><xsd:attribute name="name" type="xsd:string" use="required" /></xsd:complexType></xsd:element></xsd:choice></xsd:complexType></xsd:element></xsd:schema><resheader name="resmimetype"><value>text/microsoft-resx</value></resheader><resheader name="version"><value>2.0</value></resheader><resheader name="reader"><value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value></resheader><resheader name="writer"><value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value></resheader><data name="cancel" xml:space="preserve"><value>Cancel</value></data><data name="no" xml:space="preserve"><value>No</value></data><data name="ok" xml:space="preserve"><value>Yes</value></data>
</root>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#基础整理

元旦整理书架发现一本小册子——《C#精髓》中国出版社2001年出版的&#xff0c;粗略翻了下关于C#的知识点挺全的虽然内容谈得很浅也有很多过时的内容&#xff08;话说这本书是我在旧书店花5块钱淘的&#xff09;我保留原有章节并删减部分过时和不重要内容添加一些自己觉得重要的…

linux c之fdopen(int fd, const char *type)使用总结

1、fdopen(int fd, const char *type)的介绍 比如一写特殊文件不能用io打开,我们先要用open函数得到文件描述符,也就是这个fdopen函数的第一个参数,第二个参数是常量,不同类型不同意义,如下图 2、代码演示 #include<stdio.h> #include<fcntl.h>int main…

基于ASA防火墙的SSL ×××配置

基于ASA防火墙的SSL 配置实验拓扑图 实验目的&#xff0c;PC2通过SSL能够访问到PC1SSL服务端配置全在ASA上面&#xff0c;下面为配置步骤&#xff1a;第一步&#xff1a;建立RSA密钥证书&#xff0c;名称为ssl***keypaircrypto key generate rsa label ssl***keypair第二步&…

晚上去宾馆有什么是一定要带的?

1 前任垃圾袋&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 上一代摸鱼也是很厉害的&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 穿最帅最贵的衣服参加婚礼&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 去宾馆要带什么?&#xff08…

jQuery banner切换插件

今天学写了一个基于jQuery焦点图切换插件&#xff0c;有不对的地方还请多多指教&#xff0c;不多说下面是代码&#xff1a; 1、引jQuery库 <script src"http://code.jquery.com/jquery-1.11.1.min.js"></script> 2、Html部分 <!--Focus Html--> &l…

Linux:文件描述符

1. 概述在Linux系统中一切皆可以看成是文件&#xff0c;文件又可分为&#xff1a;普通文件、目录文件、链接文件和设备文件。文件描述符&#xff08;file descriptor&#xff09;是内核为了高效管理已被打开的文件所创建的索引&#xff0c;其是一个非负整数&#xff08;通常是小…

想象中的论文答辩和真实的论文答辩,哈哈哈哈哈哈……

全世界只有3.14 % 的人关注了爆炸吧知识本文来源&#xff1a;冷兔&#xff08;lengtoo&#xff09;整理自网络&#xff0c;图源见水印毕业季即将来临&#xff0c;放眼朋友圈&#xff0c;大家都在为毕业论文答辩忙碌。论文答辩可以说是校园生活的最后一站&#xff0c;是毕业论文…

ABP vNext微服务架构详细教程——架构介绍

总体架构所有应用服务、API网关、身份认证服务均部署在Kubernetes容器中&#xff0c;由Kubernetes提供应用配置、服务治理、服务监控等功能。客户端所有访问均通过Kubernetes的Nginx-Ingress接入服务集群&#xff0c;并由API网关负责路由匹配和身份认证后转发至相应的应用服务处…

wireshark远程抓包

2019独角兽企业重金招聘Python工程师标准>>> 配置ssh证书 在本地机器创建公钥ssh-keygen -t rsa -C your_emaildomain.com将公钥复制到ssh服务器 scp ~/.ssh/id_rsa.pub usernamehostname:~/ #将公钥文件复制至ssh服务器 ssh usernamehostname #使用用户名和密码方…

linux c之出现warning: implicit declaration of function ‘exit’ [-Wimplicit-function-declaration]这个问题

1、问题&#xff1a; 2、解决办法&#xff1a; 先执行下面命令看exit在哪个头文件下面 man exit 效果如下图 加上头文件编译&#xff0c;问题就解决了 3、 总结 如果看到编译的时候提示wall,我们首先是找到报警搞的函数&#xff0c;再用man 命令来 man 函数&#xff0c;然后找…

中大博士偷偷做了这件事,今天终于曝光了...

全世界只有3.14 % 的人关注了爆炸吧知识今天不谈其它说说心里的话大家好&#xff0c;我是超模君。做数学科普这么久&#xff0c;一直都很感谢大家的支持。不知不觉&#xff0c;超模君原创的文章已经有1000多篇了。不敢说做了多大的工作&#xff0c;但假如各位能从中学到一点东西…

.NET6之MiniAPI(十):基于策略的身份验证和授权

JWT不管是基于角色&#xff0c;还是自定义策略&#xff0c;实现的步骤都是大同小异的&#xff0c;基于自定义策略的步骤如下&#xff1a;1、appsettings.json中配置JWT参2、添加身份认证和授权服务和中间件&#xff0c;并设置为策略模式和策略名称3、定义生成Token的方法和验证…

架构设计:远程调用服务架构设计及zookeeper技术详解(上篇)

一、序言 Hadoop是一个技术生态圈&#xff0c;zookeeper是hadoop生态圈里一个非常重要的技术&#xff0c;当我研究学习hadoop的相关技术时候&#xff0c;有两块知识曾经让我十分的困惑&#xff0c;一个是hbase&#xff0c;一个就是zookeeper&#xff0c;hbase的困惑源自于它在颠…

据说很多女生都想知道男生是如何上厕所的?

1 老婆守恒定律&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 捡破烂的狗子&#xff08;via.李市民&#xff0c;侵删&#xff09;▼3 见过最搞笑的买药经历&#xff08;素材来源豆瓣yuyii&#xff0c;侵删&#xff09;▼4 男朋友的室友可以多粘人&#xff1f;&a…

【云图】如何设置支付宝里的家乐福全国连锁店地图?

【云图】如何设置支付宝里的家乐福全国连锁店地图&#xff1f; 原文:【云图】如何设置支付宝里的家乐福全国连锁店地图&#xff1f; 摘要&#xff1a;本文详细讲解了&#xff0c;如何设置支付宝服务窗。商家如何将自己的全国连锁店放置到云图上&#xff0c;并且在支付宝服务窗中…

ABP vNext微服务架构详细教程——基础服务层

1服务创建在除身份管理相关服务以外的其他业务服务中&#xff0c;我们不需要包含用户角色权限管理功能模块&#xff0c;ABP vNext框架为我们提供了模块模式&#xff0c;其默认模板不包含身份管理相关模块&#xff0c;更适合用于搭建普通的业务微服务。以产品管理服务为例&#…

中国第一个发《Nature》的竟然是清朝人!被皇帝夸天下第一,他却觉得羞耻..........

全世界只有3.14 % 的人关注了爆炸吧知识大清亡了&#xff01;这事在今天讲&#xff0c;算不得惊天动地&#xff0c;你听了之后&#xff0c;还可能微微一笑。作为中国最后一个封建王朝&#xff0c;它先闭关锁国&#xff0c;后又丧权辱国&#xff0c;造成百年前的中国在科学技术方…

码农与UI沟通的日常

事情是这样的&#xff0c;这是一个兴趣群组的效果图。 我看了一眼没有帖子时的提示&#xff0c;觉得这样的提示 不走心 不能展现出我们团队对于人生及世界的深度理解和高尚的品格。 于是&#xff0c;我选择了表达内心的真实感受。 我觉得这完美表达了用户使用时的心声&#xff…

贝叶斯分类器_Sklearn 中的朴素贝叶斯分类器

(给Python开发者加星标&#xff0c;提升Python技能)作者&#xff1a;Martin Mller&#xff0c;翻译&#xff1a;github-sisibelovedhttps://github.com/xitu/gold-miner/blob/master/TODO1/naive-bayes-classifier-sklearn-python-example-tips.md用豆机实现的高斯分布这篇教程…

linux之tr命令使用和总结

1、tr命令介绍 用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。 带有最常用…