- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我了解如何在派生自 Controller 的类中使用 IStringLocalizer 接口(interface),例如,如 here 所述或 here .
在不是从 Controller 派生的类中使用 IStringLocalizer 的正确方法是什么?
我找不到任何解决这个问题的例子。
是否总是需要将 IStringLocalizer 或 IStringLocalizerFactory 传递给构造函数?
笔记。
我知道这是一个相当普遍的问题(堆栈溢出是针对具体的编程问题)。背景是我为 .NET 项目制作本地化工具。我试图弄清楚我的工具必须对源代码进行哪些更改以支持 ASP.NET Core 项目中的本地化。
最佳答案
一个类是否派生自 Controller 无关紧要。
重要的是,您的对象是由依赖注入(inject)容器而不是使用 new 运算符创建的,如 here 所述。 .如果要在所有类中使用 ASP.NET Core 本地化机制,则必须采用这种模式来创建对象。
This page很好地描述了如何创建对象,但我将尝试举例说明它如何与本地化一起工作。
我创建了一个 MyHelper 类。该类期望将定位器对象传递给构造函数。它包含一个属性 Hello,它返回一个本地化的字符串。
namespace AddingLocalization.Classes
{
public class MyHelper
{
private readonly IStringLocalizer<MyHelper> _localizer;
public MyHelper(IStringLocalizer<MyHelper> localizer)
{
_localizer = localizer;
}
public string Hello
{
get
{
return _localizer["Hello World."];
}
}
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(opts => opts.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization (
LanguageViewLocationExpanderFormat.Suffix,
opts => opts.ResourcesPath = "Resources" )
.AddDataAnnotationsLocalization();
// This line registers the class MyHelper with the
// Dependency Injection Container.
services.AddTransient<MyHelper>();
}
public class HomeController : Controller
{
private readonly IStringLocalizer<HomeController> _localizer ;
private readonly MyHelper _h ;
public HomeController ( IStringLocalizer<HomeController> localizer,
MyHelper h )
{
_localizer = localizer;
_h = h ;
}
...
public IActionResult About()
{
ViewData["Message"] = _h.Hello ;
return View();
}
...
}
关于asp.net-mvc - 我可以在不是 Controller 的类中使用 IStringLocalizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44214387/
拥有一个包含 resx 文件的库并使用此文档 Globalization and localization in ASP.NET Core并在 Startup.cs 中添加以下代码,我们本地化了我们的
我尝试在 asp.net core 1.1 中创建 IStringLocalizer 的实现,以便为我的整个项目使用每种语言的单个资源文件(而不是每种语言每页一个...)。而且我在这里找不到如何获取请
我尝试使用 IStringLocalizer 在 .net core 1.0 应用程序中实现本地化。我能够为我编写了类似内容的 View 进行本地化 private readonly IStr
我有一个带有构造函数的类,它得到 IStringLocalizer注入(inject)。 public MailBuilder(IStringLocalizer stringLocalizer) {
我正在寻找一种方法来解决 IStringLocalizer具有真实底层 resx 文件的对象,使用与我解决 IOptions 的方式类似的方法在 this question . 这是为了构建单元测试,
我正在尝试按照此文档设置本地化 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization 我假设如果您使用内置 DI
我了解如何在派生自 Controller 的类中使用 IStringLocalizer 接口(interface),例如,如 here 所述或 here . 在不是从 Controller 派生的类中
我正在使用 IStringLoclizer使用 resx 的方法包含键值对的文件,用于本地化我的应用程序,如 the documentation 中所述. 我刚刚发现: 一方面.resx文件大小写不敏
我有一个自定义约定,需要在其中包含本地化字符串。据我所知,实例化 IStringLocalizer 的唯一方法是 DependencyInjection。 如何在 CustomConvention 中
我已将项目从 .Net Core 2.2 升级到 .Net Core 3.0。 在尝试修复所有警告和错误后,我现在正在尝试找到此警告的解决方案: 'IStringLocalizer.WithCultu
我有本地化 Controller public class HomeController : Controller { private readonly IStringLocalizer _l
这里有点困惑,ASP.Net Core 2.0 中本地化的 super 简单的 hello-world 示例。我的关于 页面设置为呈现两个本地化字符串: 从 View (使用 IViewLocaliz
我是一名优秀的程序员,十分优秀!