Hi I have a question about the SharedResources file. It is glanced over in the tutorial here: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization, and I'm not sure if I get it correctly.

我应该创建一个SharedResources.cs类,但是我应该把它放在哪里,它应该是空的还是需要用一些数据填充它?

资源文件也是一样,我应该创建一个SharedResources.da.resx文件并将所有共享字符串放在那里吗?它应该go 哪里?

当我使用IHtmlLocalizer<SharedResources>时,我是否只写@using并将其指向SharedResources.cs所在的名称空间?

我try 将SharedResources.csSharedResources.da.resx放到Resources文件夹中,并使用它将网站语言更改为丹麦语,但不起作用.使用专用资源文件(如Index.da.resxIViewLocalizer)可以正常工作,但IHtmlLocalizer<SharedResources>似乎不起作用.

当我查看页面底部链接到的示例项目时,我没有找到任何使用SharedResources的地方,如果有人用这样的示例更新它,那就太好了.

我试着这样做:

视图/主页/索引.cshtml:

@using Funkipedia.Resources
@using Microsoft.AspNetCore.Mvc.Localization
@inject IHtmlLocalizer<Shared> SharedLocalizer
...
<p>@SharedLocalizer["Hei"]</p>
...

在Startup.cs中ConfigureServices的顶部:

services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
  .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
  .AddDataAnnotationsLocalization();

在启动中配置的顶部.反恐精英:

var supportedCultures = new List<CultureInfo>
{
       new CultureInfo("nb-NO"),
       new CultureInfo("sv-SE"),
       new CultureInfo("da-DK")
};

app.UseRequestLocalization(new RequestLocalizationOptions
{
       DefaultRequestCulture = new RequestCulture("nb-NO"),
       SupportedCultures = supportedCultures,
       SupportedUICultures = supportedCultures
});

资源文件夹包含名为Shared.csShared.da.resx的空类,该类包含共享字符串.我可能需要把它的名字改成SharedResources.csSharedResources.da.resx吗?

推荐答案

好吧,经过一番探索和更多的try 和错误,我已经找到了我问题的答案,一切都开始了.以下是我的发现:

我应该创建一个SharedResources.cs类,但是我应该把它放在哪里,它应该是空的还是需要用一些数据填充它?

ANSWER: SharedResources.cs可以放在项目的根文件夹中,也可以放在Resources文件夹中,但最重要的是将命名空间设置为项目的根.对我来说是namespace Funkipedia美元.并且它不需要包含任何数据,只需要类声明.

资源文件也是一样,我应该创建一个SharedResources.da.resx文件并将所有共享字符串放在那里吗?它应该go 哪里?

ANSWER:是的,您需要创建一个名为的资源文件.cs文件,并将其放入Resources文件夹.

当我使用IHtmlLocalizer<SharedResources>时,是否只需编写@using并将其指向SharedResources.cs所在的命名空间?

ANSWER:在视图中使用IHtmlLocalizer和/或IStringLocalizer时,您需要在.cshtml文件的顶部写入以下内容:

@using Microsoft.AspNetCore.Mvc.Localization
@using Microsoft.Extensions.Localization
@inject IViewLocalizer Localizer
@inject IStringLocalizer<SharedResources> SharedLocalizer
@inject IHtmlLocalizer<SharedResources> SharedHtmlLocalizer

请注意,只有在使用IStringLocalizer时才需要@using Microsoft.Extensions.Localization

我希望这能帮助那些不熟悉ASP.NET核心应用程序的资源文件和本地化的其他人.

Asp.net相关问答推荐

无法加载文件或程序集.无效指针(HRESULT 异常:0x80004003 (E_POINTER))

web.config 部分的单独配置文件

如何在asp.net中单击按钮的新选项卡中打开页面?

*不*使用 asp.net 会员提供程序是个坏主意吗?

是否可以使用 Membership API 更改用户名

在程序集中找不到上下文类型

当用户使表单无效时单击取消按钮时,如何清除 MVC 客户端验证错误?

在不知道键名的情况下访问 JSON 对象的元素

如何设置 CSS 切换器

每个 'HttpRequest' 在 ASP.NET 中都有自己的线程吗?

如何在 IIS 7.5 上使用 ASP.NET 表单身份验证保护静态文件?

存在 ios 7 虚拟键盘时,div 元素不会停留在底部

回发后 Document.Ready() 不起作用

SignalR /signalr/hubs 404 未找到

如何将 LINQ 左外连接限制为一行

如何从 ASP.NET 中的数据表/数据视图中 Select 前 n 行

删除 HTML 或 ASPX 扩展

ASP.Net 无法创建/卷影复制

字体真棒里面asp按钮

如何在 ASP.NET 响应中传递大文件?