Наличие центрального местоположения для всей вашей локализации, будь то представление или аннотации данных, — лучший подход, который я могу придумать, и именно так я начал работать. В файле Startup.cs после установки пакетов nuget для локализации добавьте следующий код.
services.AddMvc().AddViewLocalization().AddDataAnnotationsLocalization(options =>
options.DataAnnotationLocalizerProvider = (type, factory) => new StringLocalizer<Resources>(factory));
services.Configure<RequestLocalizationOptions>(options => {
var cultures = new[]
{
new CultureInfo("en"),
new CultureInfo("ar")
};
options.DefaultRequestCulture = new RequestCulture("en", "en");
options.SupportedCultures = cultures;
options.SupportedUICultures = cultures;
});
Таким образом, DataAnnotationLocalizerProvider будет из Resources.{culture}.rex -( Файл ресурсов должен иметь модификатор доступа No code gen ) - при условии, что для языка по умолчанию не потребуются никакие ресурсы, и чтобы иметь доступ к файлу ресурсов, поскольку код не будет сгенерирован и должен быть создан пустой класс с тем же именем.
и в файле _ViewImports.cshtml введите следующее
@inject IHtmlLocalizer<Resources> Localizer
сделав это, у вас теперь есть глобальная переменная Localizer, которую можно использовать в любом из представлений для целей локализации.
вы можете найти дополнительную информацию об глобализации и локализации в ASP.NET Core
person
Rahma Samaroon
schedule
11.09.2017