我正在寻找一种方法来解析IStringLocalizer<T>
个对象与真实的底层resx文件,使用与this question中解析IOptions
的方法类似的方法。
这是为了构建单元测试,为每种语言设置每个resx,以确保字符串的实现。
如果无法使用IStringLocalizer<MyStringClass>
类型的标准解析来完成,那么我可以从resx轻松访问键值对的任何其他方式都会有所帮助。
我做了一些搜索,但没有太多运气。有谁知道一个简单的方法吗?
提前致谢。
答案 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
}