Я следил за руководством this, и я успешно настроил локализацию в своем веб-приложении.ASP.NET Core 1.0 Локализация
Есть только две вещи, которые я не понимаю.
Давайте посмотрим код:
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>
Первая проблема заключается в том, что при первом запуске, когда нет языка печенья, сайт показано ан-США культуры, хот Я настроил it-IT как язык по умолчанию. Несмотря на это, я могу правильно изменить язык и, если присутствует языковой файл cookie, сайт отображается на правильном языке. Зачем нужна локализация фреймов ru-US как язык по умолчанию?
Вторая проблема заключается в том, что если я смену язык, локализация «cultureItems», загружаемая в cshtml, не изменяется и остается загруженным началом загрузки рекламы. Что мне не хватает?
Спасибо всем заранее :)
Для вашего первого вопроса свойство DefaultRequestCulture устанавливает культуру по умолчанию для использования, когда ни одна из других поддерживаемых культур недоступна. Удалите культуру, поддерживаемую en-US, или измените культуру вашего браузера на не поддерживаемую культуру, и вы увидите это в действии. Что касается второго вопроса, какова ценность списка языков, которые вы видите? Я рассматриваю их как имена языков на их родном языке. –
Хорошо для первого вопроса, но почему инфраструктура загружает en-US, когда моя культура браузера - IT? (Это тоже поддерживается культура).Во втором вопросе я вижу список языков в выбранной культуре, поэтому в этом случае en-US. – Androidian