【问题标题】:Shared Resource in .Net Core 3.1 and Razor Pages.Net Core 3.1 和 Razor 页面中的共享资源
【发布时间】:2020-07-09 05:34:55
【问题描述】:

在关注this 指导并观看他的video on youtube 之后,特别是在35:00 到36:30 之间,我仍然无法为my demo app 提供共享资源。

我有Resources/SharedResource.cs 的课程,但我在Pages/Index.cshtml 中的IHtmlLocalizer<SharedResource>IStringLocalizer<SharedResource> 中的Pages/Index.cshtml.cs 似乎都没有工作。

在我的SharedReousrce.en-GB.resx 我有:

<data name="_COLOR_" xml:space="preserve">
    <value>colour</value>
</data>

在我的SharedResource.en-US.resx 我有:

<data name="_COLOR_" xml:space="preserve">
    <value>color</value>
</data>

通常我希望当我访问https://localhost:5001/en-us 时会在视图和控制台中看到color,并且在访问https://localhost:5001/en-gb 时会在视图和控制台中看到colour

目前,在视图中,键 _COLOR_ 被忽略,而在控制台上,SharedResource 中的键 _COLOR_ 以及 Resources/Pages/ 下索引资源中的键 _WELCOME_ 都被忽略。

任何帮助都会很棒!提前致谢!

【问题讨论】:

    标签: asp.net asp.net-core razor .net-core


    【解决方案1】:

    将您的 SharedResources.cs 移动到另一个位置

    显然,他们改变了 .net core 3.1 中为资源计算命名空间的方式。有一个GitHub issue 解释了原因以及解决此问题的其他一些选项。

    【讨论】:

    • 感谢您指出这一点!我按照您的建议移动了 Localization 文件夹下的文件(我将更改推送到 GitHub),但它似乎仍然不起作用。例如,在索引页面中,我仍然得到 COLOR。同样在我的终端中, _localizer 和 _sharedLocalizer 似乎没有正确翻译字符串(index.cshtml.cs OnGet 方法)。如果我想念其他任何事情,你会好心告诉我吗?谢谢!
    • 啊,好吧,我错过了 SharedResource resx 文件的位置。由于 SharedResource.cs 位于“Localization”文件夹下,同样必须适用于 Resources 文件夹下,因此 Resources/Localization/SharedResource resx 文件,现在它正在工作:)
    • 我将您的答案标记为正确答案,因为它解决了我的问题!如果您有时间帮助我解决 Index.cshtml.cs 第 30 行,我想知道为什么 localizer["_WELCOME"] 没有显示在控制台上...它可以在浏览器上运行,但是不在控制台上。非常感谢!
    • 据我目前的理解,当 IViewLocalizer 寻找 Resources/Pages/Index.{locale}.resx 时, IStringLocalizer 寻找 Resources/Pages/IndexModel.{locale}.resx
    • 看起来你在正确的轨道上,我通过创建 IndexModel.{locale}.resx 文件进行了快速测试,这修复了控制台输出。我建议您将需要从代码和页面访问的任何值移动到SharedResource.resx,因为它们以共享方式(或为模型代码创建另一个共享资源)并保留Pages/Index{locale}.resx 用于页面只有翻译。
    猜你喜欢
    • 2021-06-19
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2020-12-21
    • 2020-05-06
    • 2014-08-29
    • 2020-07-09
    相关资源
    最近更新 更多