我正在寻找一种方法来解决 IStringLocalizer<T>
具有真实底层 resx 文件的对象,使用与我解决 IOptions
的方式类似的方法在 this question .
这是为了构建单元测试,检查每种语言的每个 resx,以确保实现字符串。
如果不能使用 IStringLocalizer<MyStringClass>
的标准解析来完成类型,然后我可以轻松地从 resx 访问键值对的任何其他方式都会有所帮助。
我已经进行了一些搜索,但运气不佳。有谁知道一个简单的方法来做到这一点?
提前致谢。
最佳答案
您可以直接实例化一个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
}
关于c# - 手动使用真正的 resx 解析 IStringLocalizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46197093/