【发布时间】:2023-03-27 00:17:02
【问题描述】:
我在让文本本地化在 ASP.NET Core 3 中工作时遇到了一些问题。或者更确切地说,它以前可以工作,但由于一次事故(没有隐藏更改并意外删除其中一些)它不再起作用。我确定我缺少一些基本的东西,但我可以终生解决它。
我有以下代码块:
Startup.cs:
private static readonly List<CultureInfo> SupportedCultures = new List<CultureInfo>
{
new CultureInfo("en"),
new CultureInfo("fr")
};
// ...
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix, opts => { opts.ResourcesPath = "Resources"; })
.AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
factory.Create(typeof(Language));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizeAreaFolder("Identity", "/Account/Manage");
options.Conventions.AuthorizeAreaPage("Identity", "/Account/Logout");
});
services.AddLocalization(o =>
{
o.ResourcesPath = "Resources";
});
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture("en", "en");
options.SupportedCultures = SupportedCultures;
options.SupportedUICultures = SupportedCultures;
});
// ...
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en"),
SupportedCultures = SupportedCultures,
SupportedUICultures = SupportedCultures,
RequestCultureProviders = new List<IRequestCultureProvider>
{
new QueryStringRequestCultureProvider(),
new CookieRequestCultureProvider()
}
});
资源\Language.cs:
public sealed class Language
{
public sealed class Login
{
public const string PageTitle = nameof(Login) + nameof(PageTitle);
public const string SubmitButton = nameof(Login) + nameof(SubmitButton);
public const string Username = nameof(Login) + nameof(Username);
// ...
}
}
查看:
@inject IHtmlLocalizer<Language> Localizer
...
@Localizer[Language.Login.SubmitButton]
我还有以下包含键和文本的 resx 文件。
Resources\Language.resx(也尝试使用名称 Language.en.resx 无济于事)
资源\Language.fr.resx
所有文本都简单地显示为键,无论它是否源自 MVC 视图、Razor 页面、从 DI 获取本地化器的任意类或属性。
关于我做错了什么的任何线索?谢谢
【问题讨论】:
标签: .net-core localization globalization asp.net-core-3.0