我尝试在以下项目结构中使用 Asp.Net Core 创建 Razor 类库:
我已在我的 Web 应用程序中使用这些设置在 Startup
类中进行本地化:
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddViewLocalization(
LanguageViewLocationExpanderFormat.Suffix,
opts => { opts.ResourcesPath = "Resources"; })
.AddDataAnnotationsLocalization();
services.Configure<RequestLocalizationOptions>(
opts =>
{
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("en")
};
opts.DefaultRequestCulture = new RequestCulture("en");
opts.SupportedCultures = supportedCultures;
opts.SupportedUICultures = supportedCultures;
});
....
var options = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(options.Value);
在Index.cshtml
中:
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
<h1>@Localizer["Title"]</h1>
不幸的是,结果只是字符串“Title”。我无法从 Razor 类库加载这些 resx 文件。
如何像上面一样使用 Razor 类库中的本地化?
更新:这是非常相似的用例 - https://github.com/aspnet/Localization/issues/328 - 这提供了一些例子。
最佳答案
我还没有尝试过接受的答案,并且根据评论,OP似乎没有让它发挥作用。我实现了一种类似于 MVC/Razor Pages 使用的 View /页面定位器模式的模式,即可以在 RCL 或单独的程序集中提供资源并使用 ViewLocalizer,它只会找到匹配的资源来自最高优先级资源的字符串。您可以阅读我的实现,看看它是否适合您。
关于razor - 如何在 Asp.Net Core 中的 Razor 类库中使用本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50841085/