大佬们,请教个问题,.net core内部很多错误信息都是放到Resources.resx里面,然后通过ResourceManager来读取,我可以修改这个Resources.resx里面某些值的数据嘛?我想将某些错误信息显示成中文,但是又不想重写默认的类。非常感谢。
可以基于 Localization 机制实现,以下是一个参考
ConfigureServices
services.Configure<RequestLocalizationOptions>(opts =>
{
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("en-US"),
new CultureInfo("zh-CN"),
new CultureInfo("zh-TW"),
new CultureInfo("zh-HK")
};
opts.DefaultRequestCulture = new RequestCulture("zh-CN", "zh-CN");
opts.SupportedCultures = supportedCultures;
opts.SupportedUICultures = supportedCultures;
});
Configure
var requestLocalizationOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>().Value;
app.UseRequestLocalization(requestLocalizationOptions);
Resources
大佬,你好,我有一点没弄明白,就是假如我要替换 Microsoft.AspNetCore.Mvc 这个命名空间的Resources.resx,该怎么弄呢?创建一个Resources-zh-CN.resx,把这个文件放到与.net core 同样的目录结构下嘛?
我大概知道怎么用了,我先研究下,多谢大佬了。
大佬,我试了下,我自己创建的Resources.resx,然后使用IStringLocalizer的确是可以切换多语言,但是怎么替换asp.net core 默认的Resources.resx呢,比如我要Microsoft.AspNetCore.Mvc.Core这个程序集里面的Resources.resx,我应该怎么弄呢,它里面是用的ResourceManager来读取资源数据,我在我程序里面创建Microsoft.AspNetCore.Mvc.Core.Resources.zh-CN.resx,好像也没有生效。
@骑着蚊子去太阳: 这个我们试过,可以参考以下 Troubleshoot ASP.NET Core Localization
@dudu: 哎,大佬,我还是没整出来,Microsoft.AspNetCore.Mvc.Core.Resources.zh-CN.resx、Microsoft.AspNetCore.Mvc.Core.zh-CN.resx、Microsoft/AspNetCore/Mvc/Core/Resources/zh-CN.resx等等,这些都试了,还是不行,我还是先暂时直接重写他自带的类吧。