创建项目什么的就不说了吧 直接进入正题吧 我这里建的是个webapi
添加资源文件
1.首先我们创建一个Language文件夹,这就是我们在后面Startup类中需要配置的目录名。
2.然后我们在Language文件夹中添加一个资源文件,并命名为Controllers.EnController.zh-CN。
3.在这个资源文件中,添加一个字段“Hello world.”, 并设置其值为“你好世界。”。
我这里还添加了几个别的语言 如图
配置Startup类
ASP.NET Core中,如果希望启动本地化,首先需要在Startup类的ConfigureServices方法中使用services.AddLocalization添加本地化服务。
在这个方法中,我们指定了前面创建的文件夹Language作为存放翻译文件的目录。 如果不指定的话会从根目录读
services.AddLocalization(o =>
{
o.ResourcesPath = "Language";
}); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
然后我们需要在Configure方法中添加本地化中间件。
IList<CultureInfo> supportedCultures = new List<CultureInfo>
{
new CultureInfo("zh-CN"),
new CultureInfo("en-US"),
new CultureInfo("ja"),
new CultureInfo("is")
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
//这里指定默认语言包
DefaultRequestCulture = new RequestCulture("zh-CN"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
建一个控制器来做基类控制器 引入本地化字符串访问器
public readonly IStringLocalizer<EnController> _localizer;
public EnController(IStringLocalizer<EnController> localizer)
{
_localizer = localizer;
}
新建一个控制器 继承基类 方法引用多语言配置项
private Microsoft.Extensions.Logging.ILogger logger;
public ValuesController(ILogger<ValuesController> _logger, IStringLocalizer<EnController> localizer):base(localizer)
{
logger = _logger;
}
[HttpGet]
[Route("Hello")]
public string Hello()
{
return _localizer["Hello world."];
}
然后就没有然后了 直接访问就好了 就可以看到结果了
中文
冰岛语
日语
具体的几种访问方式我就不异议去说了 百度随便搜一下都有
项目放在百度云上了 需要看的话直接下载也行超简单的 https://pan.baidu.com/s/1EraOwPZagEDtMxPw2VN7JA 提取码 r7m3