.net core全球化配置、使用
2021-03-29 10:25
标签:区别 阶段 补充 default efault public hat 个人 view 相关的资源还是比较多的,主要参考微软的官方文档(地址) 要做本地化( .net core中,可以通过 两个类中,分别使用了 另外在Razor页面中,也可以注入,一般是个使用 一个题外话,在学习一个概念时,一般包括这几个方面的内容:配置、使用、整体概念。如果先看概念,往往会比较抽象难以理解;如果先看配置,可能会分不清主次,陷入一些细节;而先看使用,又可能产生“我是谁,我从哪来”这样的疑惑。 回归主题,初始化还是像常见的功能那样,分为添加服务,和注册中间件两部分: 在注册中间件时,通过 另外,其实通过添加服务时的 有了服务,有了使用,真正的字符串资源是存储在资源文件中的。 资源文件的命名,符合使用资源文件的类名相同,有两种方式,例如对于HomeController使用 这里的基础目录 这里的资源文件 这里分使用、配置、资源文件三部分总结了.net core本地化方法。 .net core全球化配置、使用 标签:区别 阶段 补充 default efault public hat 个人 view 原文地址:https://www.cnblogs.com/mosakashaka/p/12608963.html本地化和全球化
Localization
),需要先让程序全球化(Globalization
)。
culture
)支持。.net core中的全球化和本地化
使用
IHtmlLocalizer
和IStringLocalizer
两个服务实现全球化,这两个服务在初始化时添加,有组件需要显示全球化字符串时,依赖注入他们,然后通过索引引用需要的文本:using System;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Localization;
namespace Localization.Controllers
{
[Route("api/[controller]")]
public class AboutController : Controller
{
private readonly IStringLocalizer _localizer;
public AboutController(IStringLocalizer localizer)
{
_localizer = localizer;
}
[HttpGet]
public string Get()
{
return _localizer["About Title"];
}
}
public class BookController : Controller
{
private readonly IHtmlLocalizer
IStringLocalizer
和IHtmlLocalizer
获取本地化字符。使用方式相同,区别在于IHtmlLocalizer
会把字符串中的html特殊标志进行转码,防止页面显示问题。IHtmlLocalizer
,防止页面布局受格式化字符串影响:@using Microsoft.AspNetCore.Mvc.Localization
@page
@inject IHtmlLocalizer
IHtmlLocalizer
类还有一个优点,就是在程序开发阶段,可以不配置任何本地化文件,此时该类会直接返回Key值作为字符串内容,方便开发。初始化
综合来看,我个人觉得可能先看使用稍好点,因为直奔主题,然后再是配置这块。对于不需要深入了解的情况下,整体概念可以略去,因为能从使用和配置上略见一斑。//in Startup.ConfigureServices
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
//in Startup.Configure
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("fr"),
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-US"),
// Formatting numbers, dates, etc.
SupportedCultures = supportedCultures,
// UI strings that we have localized.
SupportedUICultures = supportedCultures
});
RequestLocalizationOptions
配置默认的语言和所有可以支持的语言。RequestLocalizationOptions
,也能做到同样的效果:services.Configure
资源文件
IHtmlLocalizer
:
Resource name
Dot or path naming
Resources/Controllers.HomeController.fr.resx
Dot
Resources/Controllers/HomeController.fr.resx
Path
Resources
,是在services.AddLocalization(options => options.ResourcesPath = "Resources");
这里配置的。
可以看出,每个语言每个使用的类,需要一个单独的文件存放。resx
文件格式,可以在VS中右键添加,然后在VS中直接编辑。总结
后续应该还会补充一个使用Json文件作为资源文件的方法。