【发布时间】:2016-09-28 16:06:21
【问题描述】:
我已按照this 指南进行操作,并且已成功在我的 Web 应用程序中配置本地化。
只有两件事我不明白。
让我们看一些代码:
Startup.cs (ConfigureServices)
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new[]
{
new CultureInfo("it-IT"),
new CultureInfo("en-US"),
new CultureInfo("en-GB")
};
options.DefaultRequestCulture = new RequestCulture(culture: "it-IT", uiCulture: "it-IT");
});
Startup.cs(配置)
var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(locOptions.Value);
如上面链接的教程中所述,我创建了一个 _SelectLanguagePartial.cshtml(并在我的控制器中添加了建议的方法)以编程方式更改语言。
_SelectLanguagePartial.cshtml
@using Microsoft.AspNetCore.Builder
@using Microsoft.AspNetCore.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@using Microsoft.Extensions.Options
@inject IViewLocalizer Localizer
@inject IOptions<RequestLocalizationOptions> LocOptions
@{
var requestCulture = Context.Features.Get<IRequestCultureFeature>();
var cultureItems = LocOptions.Value.SupportedUICultures
.Select(c => new SelectListItem { Value = c.Name, Text = c.DisplayName })
.ToList();
}
<div title="@Localizer["RequestCultureProvider"] @requestCulture?.Provider?.GetType().Name">
<form id="selectLanguage"
asp-action="SetLanguage" asp-route-returnUrl="@Context.Request.Path"
method="post" class="form-horizontal" role="form" onchange="submit()">
@Localizer["Language"]: <select name="culture" asp-for="@requestCulture.RequestCulture.UICulture.Name" asp-items="cultureItems" class="btn btn-default"></select>
</form>
第一个问题是,在第一次启动时,当没有语言 cookie 时,虽然我已经配置了 it-IT em> 作为默认语言。尽管如此,我可以正确更改语言,并且如果存在语言 cookie,则该网站会以正确的语言显示。 为什么本地化框架加载 en-US 作为默认语言?
第二个问题是,如果我更改语言,加载在 cshtml 中的“cultureItems”的本地化不会改变,并且仍然是加载的广告启动。 我错过了什么?
提前谢谢大家:)
【问题讨论】:
-
对于您的第一个问题,DefaultRequestCulture 属性设置在没有其他支持的文化可用时使用的默认文化。要么删除 en-US 支持的文化,要么将浏览器的文化更改为不支持的文化,你会看到这一点。至于第二个问题,您看到的语言列表的价值是什么?我将它们视为以母语表示的语言名称。
-
第一个问题没问题,但是当我的浏览器文化是 IT 时,为什么框架会加载 en-US? (这也是一种受支持的文化)。对于第二个问题,我看到了所选文化中的语言列表,因此在这种情况下为 en-US。
标签: localization asp.net-core asp.net-core-mvc asp.net-core-1.0 asp.net-core-localization