2016-07-28 3 views
3

Мы пытаемся реализовать локализацию для наших моделей доменов, которые существуют в отдельном проекте библиотеки классов в нашем решении. Однако мы не можем заставить его работать, поскольку атрибуты аннотаций данных моделей не переводятся вообще.Локализация аннотаций данных в отдельной библиотеке классов

Структура проекта

  • Решение
    • Веб-проект
      • папка ресурсов (содержит .resx файлы. App.en.resx Ex.) Работает отлично
    • библиотека классов
      • модели домена
      • папка ресурсов (содержит .resx файлы. Ex. App.en.resx) Не работает

Startup.cs

services.AddMvc() 
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) 
    .AddDataAnnotationsLocalization(); 

Примечание

Локализация работает в веб-проекта, например, он переводит представления, контроллеры. Однако это не сработает, когда мы пытаемся перевести модели, которые существуют в отдельном проекте.

// Считает

+0

Не могли бы вы отредактировать свой вопрос и указать пример того, как вы пытаетесь использовать ресурс внутри вашей библиотеки классов? Я пытаюсь что-то вроде '[EmailAddress (ErrorMessageResourceName =" Validation_EmailInvalid ", ErrorMessageResourceType = typeof (MyResources))], но ** MyResources **, похоже, не существует внутри библиотеки классов, тогда как в веб-приложении. Похоже, код для использования этих строго типизированных классов, представляющих файлы ресурсов, генерируется автоматически при использовании веб-приложения. Может быть, поэтому в вашем случае это вообще не работает (это выстрел). – Alisson

ответ

1

Там нет поддержки для перевода аннотаций данных, представления, контроллер и т.д., что существует в виде отдельного проекта на данный момент, не реализуя его самостоятельно.

Решение состоит в том, чтобы написать собственную собственную реализацию, используя IStringLocalizer, IStringLocalizerFactory и зарегистрировать ее в Startup.cs. See how StringLocalizer/Factory works.

FYI: Команда aspnet, которая работает с Localizer, знает об этом и работает над решением для поддержки этого в будущем. См. aspnet/Localization

+0

Это может работать, но в соответствии с документацией ASP.NET CORE здесь: docs.asp.net/en/latest/fundamentals/..., мы должны иметь возможность локализовать эти сообщения об ошибках DataAnnotation без указания имени и типа ресурса. Однако, что бы я ни старался, я не могу заставить эту работу работать. Может ли кто-то поделиться с этим опытом? – Vladislav