ASP .NET Core 1.0 RTM Локализация не работает
Я пытался реализовать локализацию для моего веб-приложения .NET Core 1.0 RTM следующимдокументация microsofts и я просто не могу заставить его работать. У меня проблема в том, что он всегда отображает строки из английского файла ресурсов, независимо от того, как я пытаюсь установить культуру.
Если у кого-то есть 5 минут своего времени, я был бы очень благодарен за ваш вклад.
Вот мой контент Startup.cs, касающийся локализации:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.SubFolder)
.AddDataAnnotationsLocalization();
services.AddScoped<LocalizationFilter>();
services.AddLocalization(options => options.ResourcesPath = "Resources");
var supportedCultures = new List<CultureInfo>{
new CultureInfo("en-US"),
new CultureInfo("sl-SI"),
new CultureInfo("de-DE"),
new CultureInfo("hr-HR")
};
services.Configure<RequestLocalizationOptions>(options =>
{
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.DefaultRequestCulture = new RequestCulture(new CultureInfo("en-US"),
new CultureInfo("en-US"));
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
...
var supportedCultures = new List<CultureInfo>{
new CultureInfo("en-US"),
new CultureInfo("sl-SI"),
new CultureInfo("de-DE"),
new CultureInfo("hr-HR")
};
var requestLocalizationOptions = new RequestLocalizationOptions
{
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures,
DefaultRequestCulture = new RequestCulture(new CultureInfo("en-US"),
new CultureInfo("en-US"))
};
app.UseRequestLocalization(requestLocalizationOptions);
}
И вот как я меняю культуру внутри OnActionExecuting в моем ActionFilter
actionContext.HttpContext.Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) });
CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;
Я также попытался сделать это на моем контроллере без удачи.
Тогда, по моему мнению, я использую@inject IViewLocalizer Localizer
отображать локализованные строки с@Localizer["Name"]
.
Мои ресурсы находятся в папкеРесурсы / Views / ControllerName вот так:
Ресурсы, / Views / ControllerName / ViewName.en.resxРесурсы / Views / ControllerName / ViewName.sl.resx...Отображаемая строка всегда из.en Файл ресурса, независимо от того, как я пытаюсь поблагодарить культуру. Я что-то упускаю? Есть ли что-то еще, что я должен сделать? Кажется, у меня проблема с настройкой языка. Основываясь на документации, вы просто должны установить куки сResponse.Cookies.Append
но я тоже пробовал сCultureInfo.CurrentCulture
какThread.CurrentThread.CurentCulture
больше недоступен
Я действительно не знаю, что мне не хватает. Есть идеи?