不在Web服务器中运行时如何为iViewLocalizer设置中间件选项

时间:2019-08-13 22:59:41

标签: razor localization

我建立了一个组件,用于根据以下内容https://scottsauber.com/2018/07/07/walkthrough-creating-an-html-email-template-with-razor-and-razor-class-libraries-and-rendering-it-from-a-net-standard-class-library/

将剃须刀模板呈现为字符串(用于生成电子邮件)

我最初是在MVC站点中构建它的,然后它起作用了。我需要将此移植到Azure函数中。像在Azure Function环境中一样,没有Startup.cs(即没有Configure和ConfigureServices),我基于以下内容创建自己的ServiceCollection:https://codeopinion.com/using-razor-in-a-console-application/

模板和模型渲染工作正常,但是我找不到本地化的资源。我在视图中注入了IViewLocalizer,并且可以正常工作,但最终还是得到了字符串键而不是本地化的字符串值。

请注意,由于我没有公共无效的Configure(IApplicationBuilder应用程序,IHostingEnvironment env,ILoggerFactory loggerFactory),因此我没有配置任何中间件。我怀疑这可能是问题的根源。

或者,仅查找资源会不会有问题?我有这个结构:

Root
|-Templates
  |-Foo
    |- Foo-External.cshtml
|-Resources
  |-Templates
    |-Foo
      |-Foo-External.en-US
      |-Foo-External.es-SP
      |-Foo-External.pt-BR

依此类推。

看起来字符串已被编译为:

Directory.GetCurrentDirectory()\ bin \ zh-CN \ MyProjectName.resources.dll Directory.GetCurrentDirectory()\ bin \ es-SP \ MyProjectName.resources.dll 等

当我反映一个dll时,我可以看到它具有:

MyProjectName.resources.dll
|-Resources
  |-My.Fully.Qualified.Namespace.Foo-External.es-SP.resources

请注意,资源所在的命名空间与程序集名称不同。我刚刚看到一些文章指出了这个问题。我不确定这是我正在运行的还是中间件。

谢谢! 约翰

0 个答案:

没有答案