Я пытаюсь оборачивать голову тем, как лучше всего реализовать файлы ресурсов для нескольких языков в MVC6, но из-за изменений с каждой версией меня немного путают, как правильно их реализовать. Что требуется и каковы ограничения?
Несколько статей, на которые я смотрел:
https://damienbod.com/2015/10/21/asp-net-5-mvc-6-localization/
MVC 6: как использовать файлы RESX?
http://pratikvasani.github.io/archive/2015/12/25/MVC-6-localization-how-to/
Я пытаюсь настроить файлы ресурсов, чтобы у меня был доступ на английском и немецком языках для моих пользователей, который был бы основан на настройках браузера или личных настройках в их учетной записи.
Каким будет лучший способ достичь этого?
Спасибо заранее!
Edit:
Итак, согласно статье, я добавил следующий код в Startup.cs:
services.AddLocalization(options =>
options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization(Microsoft.AspNet.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
var supportedCultures = new[]
{
new CultureInfo("de-DE"),
new CultureInfo("en-US")
};
//Set Default Localization Culture
app.UseRequestLocalization(new RequestLocalizationOptions
{
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
}, new RequestCulture(new CultureInfo("en-US")));
Затем в папке "Ресурсы" я создал новые файлы resx с именами файлов:
-
"Views.Shared._LocalizationTest.en-US.resx"
-
"Views.Shared._LocalizationTest.de-DE.resx"
И мой частичный вид выглядит так:
@using Microsoft.AspNet.Localization
@using Microsoft.AspNet.Mvc.Localization
@inject IViewLocalizer Localizer
<div>
@Localizer["TestString"]
</div>
Кажется, что мне что-то не хватает, поскольку вместо "Test String" вместо "Test String" для английского языка или "German: Test String" (согласно моим файлам ресурсов) появляется "TestString".
Любые идеи?