c# - 手动使用真正的 resx 解析 IStringLocalizer

标签 c# .net .net-core

我正在寻找一种方法来解决 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/

相关文章:

c# - 你应该压缩 html 页面吗?如果是这样,如何在 .net 中做到这一点?

c# - CosmosDB 中的模拟 ItemResponse

c# - 使用 Graph API c# unity3d 访问 facebook 的帖子等

c# - 使用 For Loop C# 在按钮上单击标签增量

.net - Ruby on Rails 与 .NET 集成的状况如何?

c# - 在ASP.NET Core中在 Controller OnActionExecuting之前执行全局过滤器

.net-core - EF Core 中使用多个请求而不是一个请求

c# - 当目标架构为arm32v7时,azure iot Edge构建失败(在ubuntu中)

c# - 获取 Silverlight ClientBin 目录的路径

c# - 是否有任何带有 API 的实时视频流编辑开源项目可以满足我的需求?