StringLocalizers GetAllStrings()始终抛出异常

时间:2017-05-24 10:28:53

标签: c# asp.net-core asp.net-core-mvc

在我的.net核心Web应用程序中,我想创建一个返回给定.resx文件中所有翻译的Endpoint。

我使用StringLocalizer服务从.resx文件中获取字符串。当我尝试使用_localizer[HelloString];获取单个字符串时,将返回正确的翻译,以便进行注入/翻译。

  

当我尝试使用_localizer.GetAllStrings();时,我总是会收到一条消息“当前文化中没有任何清单。”

资源文件名为 Controllers.TranslationController.resx,Controllers.TranslationController.de.resx,...

public class TranslationsController : Controller
{
    private readonly IStringLocalizer<TranslationsController> _localizer;

    public TranslationsController(IStringLocalizer<TranslationsController> localizer)
    {
        _localizer = localizer;
    }

    [HttpGet]
    public String Get(string lang = "")
    {
        var resourceSet = _localizer.GetAllStrings();
        return String.Empty;
    }
}

该方法尚未完成,请忽略return String.Empty;

我在Startup.cs中注入并配置StringLocalizer,如下所示:

public void ConfigureServices(IServiceCollection services)
{
    services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; });
    // Add framework services.
    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    var supportedCultures = new[]
    {
        new CultureInfo("en-US"),
        new CultureInfo("de-DE"),
        new CultureInfo("de"),
        new CultureInfo("en-GB"),
        new CultureInfo("en"),
        new CultureInfo("fr-FR"),
        new CultureInfo("fr"),
    };

    app.UseRequestLocalization(new RequestLocalizationOptions
    {
        DefaultRequestCulture = new RequestCulture("de-DE"),
        SupportedCultures = supportedCultures,
        SupportedUICultures = supportedCultures
    });

我尝试使用_localizer.WithCulture(new CultureInfo(lang)).GetAllStrings()重命名文件或选择特定的文化,但似乎没有任何效果。

0 个答案:

没有答案