【问题标题】:Retrieve string value from resource file in .NET Core 3.1 WinForms (need simple example)从 .NET Core 3.1 WinForms 中的资源文件中检索字符串值(需要简单示例)
【发布时间】:2020-11-02 22:12:57
【问题描述】:

我翻遍了所有地方,发现了许多复杂的例子。真的,我只需要从我的资源文件中读取一个字符串。我的旧代码(.NET Core 之前的代码)不再工作了。有人可以给我看一个简单的例子吗?

【问题讨论】:

    标签: c# winforms .net-core resources resx


    【解决方案1】:

    我没有在 .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 文件中有更多与本地化相关的代码,但不清楚您究竟需要哪些代码。我会将所有与本地化相关的代码从它们复制到您的应用程序中,并通过在 开始工作后删除部分来找出实际需要的代码。

    【讨论】:

    • 谢谢。我之前看到有人提到了startup.cs。我没有。你是说program.cs吗?
    • 另外,这不是 MVC 应用程序,所以我不确定如何处理所有这些代码。
    • 嗯,好的,所以在 MVC 应用程序中,您将拥有 Startup.cs,它为应用程序设置了很多东西。如果您的 Program.cs 中有类似的设置,您可以这样做。我发现这个关于在控制台应用程序中使用本地化的问题:stackoverflow.com/questions/45652521/… 希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2021-11-12
    • 2020-12-10
    • 1970-01-01
    相关资源
    最近更新 更多