【发布时间】:2020-11-02 22:12:57
【问题描述】:
我翻遍了所有地方,发现了许多复杂的例子。真的,我只需要从我的资源文件中读取一个字符串。我的旧代码(.NET Core 之前的代码)不再工作了。有人可以给我看一个简单的例子吗?
【问题讨论】:
标签: c# winforms .net-core resources resx
我翻遍了所有地方,发现了许多复杂的例子。真的,我只需要从我的资源文件中读取一个字符串。我的旧代码(.NET Core 之前的代码)不再工作了。有人可以给我看一个简单的例子吗?
【问题讨论】:
标签: c# winforms .net-core resources resx
我没有在 .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"];
}
(从视图中使用它可能是一种更好的方法)。
实际的本地化文件存储在 Resources folder 中,如 Startup.cs 配置中所述。您可以看到它们是按控制器/视图组织的。
Startup.cs 文件中有更多与本地化相关的代码,但不清楚您究竟需要哪些代码。我会将所有与本地化相关的代码从它们复制到您的应用程序中,并通过在 开始工作后删除部分来找出实际需要的代码。
【讨论】: