我已经看了很多遍,发现了许多复杂的例子。真的,我只需要从资源文件中读取一个字符串即可。我的旧代码(.NET Core之前的版本)不再起作用。有人可以给我举个简单的例子吗?
iCMS 回答:从.NET Core 3.1 WinForms中的资源文件中检索字符串值(需要简单的示例)
我还没有亲自在.NET Core中处理资源文件,但看起来确实仍然支持它们。我发现了这篇文章:Globalization and localization in ASP.NET Core链接到sample project。
它看起来似乎很复杂,但最终如果我们将其分解的话,很有希望。如果您看一下该代码,那么重要的事情是:
在startup.cs中,他们添加了本地化支持:
...
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
...
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new [] { "en-US","fr" };
options.SetDefaultCulture(supportedCultures[0])
.AddSupportedCultures(supportedCultures)
.AddSupportedUICultures(supportedCultures);
});
在控制器中,他们通过依赖注入(例如HomeController.cs)获得服务:
private readonly IStringLocalizer<HomeController> _localizer;
public HomeController(IStringLocalizer<HomeController> localizer)
{
_localizer = localizer;
}
他们从那里在操作中使用它:
public IActionResult About()
{
ViewData["Message"] = _localizer["Your application description page."];
return View();
}
或者在View中:
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@{
ViewData["Title"] = Localizer["About"];
}
(在View中使用它可能是一种更好的方法)。
实际的本地化文件存储在Resources folder中,如Startup.cs配置中所述。您可以看到它们是按控制器/视图组织的。
Startup.cs
文件中还有更多与本地化相关的代码,但是尚不清楚您到底需要哪些代码。我会将所有与本地化相关的代码复制到您的应用程序中,并在工作后删除 来找出实际需要的代码。