【发布时间】:2020-07-24 13:31:43
【问题描述】:
我几周前开始使用 asp.net core 3.0 开发一个 web 应用程序,现在我必须开发本地化服务,为了简化我的代码,我只会写新的“部分”所以在这里他们是: 启动.cs: ConfigureServices 方法:
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc(option => option.EnableEndpointRouting = false)
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization()
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("fr-FR"),
new CultureInfo("en-US"),
new CultureInfo("de-DE"),
};
options.DefaultRequestCulture = new RequestCulture(culture: "en", uiCulture: "en-US");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
services.AddTransient<SharedResources>();
SharedResources.cs 位于应用根目录中
Configure 方法
var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(locOptions.Value);
_ViewImports.cshtml:
@using Microsoft.Extensions.Localization
@inject IStringLocalizer<Backoffice.SharedResources> LangDefault
@addTagHelper *, Localisation
一个视图:
@using Microsoft.AspNetCore.Mvc.Localization
@model some-model
@inject IViewLocalizer Localizer
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Index">@Localizer["Sede"]</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Privacy">@Localizer["FirstName"]</a>
</li>
</ul>
</div>
我的应用程序仅从 Views.[SomeController].[SomeAction].fr.resx 获取法语翻译,我找不到如何制作选择列表来更改语言,我找到的是 API 应用程序或旧的 .net 核心,我找到了 @987654321 @,但它遗漏了一些要点,你能提供一个改编的指南或一些帮助吗?谢谢
【问题讨论】:
标签: c# asp.net asp.net-core localization asp.net-core-3.0