Локализованные ресурсы - нельзя получить доступ к более чем одному ресурсу в файле .resx

Я пишу веб-приложение ASP .Net Core с проверкой аннотации данных. В атрибутах, описывающих свойства модели, я определяю ErrorMessageResourceType и ErrorMessageResourceName.

Файлы ресурсов размещаются в другом проекте вне основного решения приложения. (с использованием интерфейса командной строки dotnet с поддержкой редактора сообщества Visual Studio 2017)

В моей модели есть:

[Required(AllowEmptyStrings = false, ErrorMessageResourceType = typeof(Resources.NewPetDataValidation),
                  ErrorMessageResourceName = "EmptyField")]
[StringLength(30, ErrorMessageResourceType = typeof(Resources.NewPetDataValidation),
                  ErrorMessageResourceName = "NameMaxLength")]
public string Name {get; set;}

В проекте Resources я создал отдельный файл .resx для каждого языка, то есть NewPetDataValidation.en.resx, NewPetDataValidation.de.resx.

Затем в редакторе ресурсов Visual Studio я добавил строки ресурсов в каждый файл с именами ресурсов.

Для английского языка: Имя: EmptyField Значение: Пустое поле!

Для немецкого языка: Имя: EmptyField Значение: Leer Feld!

и т.д ...

В представлении Razor у меня есть: @ Html.ValidationMessageFor (Model => Model.Name, null, new {@style = "color: red"})

Все работает нормально, если у меня нет доступа к модели более чем к одной строке ресурса в определенном файле .resx. Я уверен, что ErrorMessageResourceName соответствует определенным именам ресурсов.

С другой стороны, если я создаю отдельные файлы .resx для каждой переведенной фразы, приложение будет работать. Однако я не думаю, что создание такого количества файлов .resx - хорошая идея.

Заранее спасибо за вашу поддержку.


person David762    schedule 12.03.2017    source источник


Ответы (1)


Я понял, что моя ошибка заключалась в переименовании ресурса по умолчанию, созданного в Visual Studio.

Рабочие шаги:

  1. Создайте ресурс по умолчанию MyResource.resx (синтаксис без суффикса языка / культуры, он сгенерирует файл класса, на который можно ссылаться из другого проекта)

  2. Добавьте новые MyResource.en.resx, MyResource.de.resx ... для всех рассматриваемых языков.

person David762    schedule 12.03.2017