.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…

HTML form的一些属性(第一版)

HTML表单属性总结(第一版) 基本格式为:<input type"类型" name"名字[唯一,有的类型的同组是需要设置相同的名字]" value"值,类型不同的,他们的含义是不同的">. 例如:<input type"text" name"username" value"…

基于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…

100以内素数之和python123_python质数,水仙花数,简单猜拳游戏等

找到所有两位的奇妙数&#xff1a;奇妙数。即一个整数等于其各位数字之和加上各位数字之积 例如 39 (39) (3*9)找到100以内所有的质数要用户从键盘输入任意整数&#xff0c;计算该整数的偶数个数&#xff0c;奇数个数和总位数。将这三个数字拼接成一个新的数字&#xff0c;并…

linux c之用fputc和fgetc复制文件并且打印在终端

1、fputs和fgetc相关函数解释 1、字符的输出 #include<stdio.h> int getc(FILE *fp) int fgetc(FILE *fp) int getchar(vaid) 3个函数若成功返回读入的字符值,若出错或则到末尾返回EOF,EOF为常量是-1 2、字符的输入 #include<stdio.h> int putc(int c, FILE *fp…

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…

DispatcherCore ,一个WPF异步操作常用功能库

在WPF开发中&#xff0c;经常遇到跨线程的问题&#xff0c;以及频繁使用跨线程操作UI线程中的界面元素&#xff0c;一些COM组件操作也是必须在UI主线程中使用&#xff0c;否则就会抛出各种无法访问的错误。是否有遇到过呢&#xff1f;为了解决各种跨线程访问的问题&#xff0c;…

Linux:文件描述符

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

Objective-C入门

厂长最近又有新计划&#xff0c;准备做iOS上的开发&#xff0c;要操作工们&#xff08;其实就是我自己&#xff09;学习Objective-C&#xff0c;准备为厂子下一步的发展做出巨大贡献。拿人钱财&#xff0c;替人消灾&#xff0c;又得花时间折腾一门语言。话说自从来到现车间&…

linux c之用fwrite和fread实现文件的复制

1、题目 用fwrite和fread函数实现文件的复制 2、函数解释 #include<stdio.h> size_t fread(void *ptr, size_t size, size_t nmemb, FILE *FP); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *FP); 2个函数返回:读或写的对象数 fread函数用于执行直…

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

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

python总线 rabbitmq_python - 操作RabbitMQ

介绍RabbitMQ是一个在AMQP基础上完整的&#xff0c;可复用的企业消息系统。他遵循Mozilla Public License开源协议。MQ全称为Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信&#xff0c;而无需专用…

JavaScript闭包学习笔记

闭包&#xff08;closure&#xff09;是JavaScript语言的一个难点&#xff0c;也是它的特色&#xff0c;很多高级应用都要依靠闭包实现。 下面就是我的学习笔记&#xff0c;对于JavaScript初学者应该是很有用的。 一、变量的作用域 要理解闭包&#xff0c;首先必须理解JavaScri…

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 #使用用户名和密码方…

BO QUERY BUILDER - SI_INSTANCE相关属性

概念&#xff1a;一个instance分为runnable(schedule生成&#xff0c;用于在recurring时间点创建其他Instance), 非runnable&#xff08;runnable instance生成的结果&#xff09;。SI_INSTANCE SI_INSTANCE_OBJECT SI_RUNNABLE_OBJECT验证通过select * from ci_infoobjects …

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;但假如各位能从中学到一点东西…