手动使用真实的resx解析IStringLocalizer

Chr*_*ris 3 .net c# .net-core

我正在寻找一种IStringLocalizer<T>使用真正的基础resx文件解析对象的方法,该方法与我IOptions此问题中的解析方法类似。

这是为了构建单元测试,以检查每种语言的每个resx,以确保实现了字符串。

如果无法使用IStringLocalizer<MyStringClass>类型的标准解析来完成,那么我可以轻松地从resx访问键值对的任何其他方式都将有所帮助。

我已经做了一些搜索,但是运气不佳。有人知道这样做的简单方法吗?

提前致谢。

RMD*_*RMD 6

您可以直接实例化StringLocalizer实例,将ResourceManagerStringLocalizerFactory传递给其构造函数。

ResourceManagerStringLocalizerFactory会从资源文件中检索实际的本地化值的照顾。

因此,例如:

    using Microsoft.Extensions.Localization;
    using Microsoft.Extensions.Logging.Abstractions;
    using Microsoft.Extensions.Options;

    ...

public void MyTest() 
{
    var options = Options.Create(new LocalizationOptions());  // you should not need any params here if using a StringLocalizer<T>
    var factory = new ResourceManagerStringLocalizerFactory(options, NullLoggerFactory.Instance);
    var localizer = new StringLocalizer<MyResourceFile>(factory);

    var myText = localizer["myText"];  // text using default culture

    CultureInfo.CurrentCulture = new CultureInfo("fr");
    var myFrenchText = localizer["myText"];  // text in French

}
Run Code Online (Sandbox Code Playgroud)