如何在我的控制台应用程序中使用带有{} .en.resx的IStringLocalizer <t>?

时间:2017-12-07 13:00:02

标签: c# dependency-injection localization .net-core console-application

我有一个.NET Core Console应用程序,它与我的ASP.NET核心应用程序共享一些公共库。我需要将Globalization添加到公共项目中,在ASP.NET中我可以使用语言some.en.resx轻松创建一个新的.resx文件

目前,我可以注册我的服务,它正在调用StringLocalizer类但不返回本地化字符串。我设法通过从文件中删除.en来实现它,但这会破坏我的ASP.NET项目。

就像我需要在某处注册默认语言一样,但我无法在哪里工作。

class Program
{
    static void Main(string[] args)
    {
        ServiceCollection serviceCollection = new ServiceCollection();
        serviceCollection.AddTransient<MyService>();
        serviceCollection.AddSingleton<LoggerFactory>();

        serviceCollection
            .AddLogging()
            .AddLocalization();

        ServiceProvider buildServiceProvider = serviceCollection.BuildServiceProvider();
        MyService myService = buildServiceProvider.GetService<MyService>();
        string greeting = myService.GetGreeting();
        Console.WriteLine(greeting);
        Console.ReadKey();
    }
}

public class MyService
{
    private readonly IStringLocalizer<MyService> _stringLocalizer;

    public MyService(IStringLocalizer<MyService> stringLocalizer)
    {
        _stringLocalizer = stringLocalizer;
    }

    public string GetGreeting()
    {
        return _stringLocalizer.GetString("Greeting");
    }
}

enter image description here

我有什么方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:1)

我还没有设法找到重复ASP.NET行为的方法。我不得不接受我不能拥有.en.resx文件,幸运的是还有一个文化&#34; en&#34; ASP.NET使用默认的.resx文件