手动解析IStringLocalizer与真正的resx

时间:2017-09-13 12:04:58

标签: c# .net .net-core

我正在寻找一种方法来解析IStringLocalizer<T>个对象与真实的底层resx文件,使用与this question中解析IOptions的方法类似的方法。

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

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

我做了一些搜索,但没有太多运气。有谁知道一个简单的方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

您可以直接实例化 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

}