- From the view (using IViewLocalizer)
- From code (using IStringLocalizer via the controller)
about.cshtml
Код: Выделить всё
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@{
ViewData["Title"] = "About";
}
@ViewData["Title"]
@ViewData["Message"]
@Localizer["Use this area to provide additional information."]
функциональный />
Код: Выделить всё
public class HomeController : Controller
{
private readonly IStringLocalizer _localizer;
public HomeController(IStringLocalizer localizer)
{
_localizer = localizer;
}
public IActionResult Index()
{
return View();
}
public IActionResult About()
{
ViewData["Message"] = _localizer["Your application description page."];
return View();
}
}
< /code>
[b] startup.cs < /strong> (соответствующие части) < /p>
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
services.Configure(options =>
{
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("fr-CH"),
};
options.DefaultRequestCulture = new RequestCulture(culture: "en-US", uiCulture: "en-US");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
var locOptions = app.ApplicationServices.GetService();
app.UseRequestLocalization(locOptions.Value);
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
< /code>
Ресурсы: < /strong> < /p>
views.home.about.fr-ch.resx
^ с двумя значениями в ней: < /p>
». = "Используйте это
область ... успех для FR-Ch!" < /li>
«Страница описания вашего приложения.» =
"Ваше приложение Description ... Успех для FR-CH!" < /li>
< /ul>
мои результаты: < /strong> < /p>
localhost: 56073 /home /about < /p>
На самом деле жестко закодированный)
localhost: 56073/home/about? Culture = fr-ch
^ Это делает только 2-ю строку: «Используйте эту область ... Успех для FR-CH!», Который ясно означает, что весь код, который используется, работает [/b] и. < /p>
Но первая строка (установленная в коде как viewdata ["message"] < /code>) не получает версию FR-CH! Это похоже на istringlocalizer < /code> неудачный < /strong>, чтобы понять, что был указан LANG, или не удалось найти FR-CH.RESX, который явно доступен. Фабрика для HomeController CTOR как IstringLocalizerFactory Factory
Подробнее здесь: https://stackoverflow.com/questions/485 ... glocalizer