Надеюсь, это поможет :)

юсь с локализацией в моем новом проекте .NET Core. У меня есть 2 проекта:

Проект DataAccess с моделями и аннотациями данных (например, RequiredAttribute)Веб-проект с MVC-представлениями и т. Д.

Мое желание состоит в том, чтобы локализовать все атрибуты проверки глобально в одном месте, чтобы иметь подобное поведение, как MVC 5. Возможно ли это?

Я не хочу иметь отдельные языковые файлы для моделей / видов и т. Д.

Документация Microsoft не очень понятна при использовании файла SharedResources.resx с локализованными сообщениями DataAnnotation.

В MVC 5 я не позаботился об этом. Мне нужно было только установить язык на мой язык, и все было хорошо.

Я попытался установить для ErrorMessageResourceName и ErrorMessageResourceType имена файлов общих ресурсов «Strings.resx» и «Strings.de.resx» в проекте DataAccess:

[Required(ErrorMessageResourceName = "RequiredAttribute_ValidationError", ErrorMessageResourceType = typeof(Strings))]

Я также попробовал название настройки, чтобы бытьRequiredAttribute_ValidationError - но это не работает.

Я уже добавила.AddDataAnnotationsLocalization() в Startup.cs - но, похоже, ничего не делает.

Я прочитал несколько статей, но я не смог найти причину, почему это не работает.

РЕДАКТИРОВАТЬ: Что у меня есть до сих пор:

1.) Класс LocService

 public class LocService
    {
        private readonly IStringLocalizer _localizer;

        public LocService(IStringLocalizerFactory factory)
        {
            _localizer = factory.Create(typeof(Strings));
        }

        public LocalizedString GetLocalizedHtmlString(string key)
        {
            return _localizer[key];
        }
    }

2.) Добавлена ​​папка "Ресурсы" с Strings.cs (пустой класс с фиктивным конструктором)

3.) Добавлен файл Strings.de-DE.resx с одним элементом «RequiredAttribute_ValidationError»

4.) Модифицировал мой Startup.cs

public void ConfigureServices(IServiceCollection services)
        {
            services.AddTransient<MessageService>();
            services.AddDbContext<DataContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

            services.AddSingleton<LocService>();
            services.AddLocalization(options => options.ResourcesPath = "Resources");
            services.AddMvc()
                .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver())
                .AddDataAnnotationsLocalization(
                    options =>
                    {
                        options.DataAnnotationLocalizerProvider = (type, factory) => factory.Create(typeof(Strings));
                    });

            services.Configure<RequestLocalizationOptions>(
                opts =>
                {
                    var supportedCultures = new List<CultureInfo>
                    {
                        new CultureInfo("de-DE"),
                    };

                    opts.DefaultRequestCulture = new RequestCulture("de-DE");
                    // Formatting numbers, dates, etc.
                    opts.SupportedCultures = supportedCultures;
                    // UI strings that we have localized.
                    opts.SupportedUICultures = supportedCultures;
                });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseBrowserLink();
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();

            app.UseRequestLocalization(locOptions.Value);
            app.UseStaticFiles();
            app.UseMvcWithDefaultRoute();
        }

Я следовал инструкциям здесь, но это не работает:https://damienbod.com/2017/11/01/shared-localization-in-asp-net-core-mvc/

Пожалуйста, имейте в виду, что мои Модели хранятся в отдельном проекте.

Ответы на вопрос(3)

Ваш ответ на вопрос