Выберите правильный язык для аннотаций данных в ASP.NET

Я пытаюсь локализовать сообщения об ошибках для атрибутов аннотаций данных. Я создал два resx-файла:

DataAnnotationsLocalization.resx
> DataAnnotationsLocalization.Designer.cs
DataAnnotationsLocalization.uk.resx

Я вызываю AddDataAnnotationsLocalization в Program.cs и теперь пытаюсь использовать его в своей модели страницы:

[MinLength(10, ErrorMessage = "LocationAddressFormatError")]
public string Address { get; set; }

Но в результате этого я вижу только свои английские ресурсы, тогда как другие локализованные строки я вижу в соответствии с текущим языком и региональными параметрами (CultureInfo.CurrentUICulture).

Я поставил точку останова в Designer.cs, но она никогда не срабатывает. Похоже, что фреймворк сразу переходит к DataAnnotationsLocalization.resx и не учитывает версии на других языках.

Как я могу показать правильную языковую версию для текущей культуры?

проверьте эту тему - может поможет. NET 6 stackoverflow.com/questions/71294332/…

Power Mouse 21.04.2024 02:16

@PowerMouse Мой случай другой, фреймворк использует мои ресурсы, но только для английского языка.

Yola 21.04.2024 12:57

Убедитесь, что вы сделали файл .resx общедоступным. вы установили промежуточное программное обеспечение в файле запуска. вместо использования ErrorMessage попробуйте использовать ErrorMessageResourceType и ErrorMessageResourceName вот ветка, на которую вы можете сослаться stackoverflow.com/a/20699676/11147346.

Jalpa Panchal 22.04.2024 08:58

@JalpaPanchal Я искал SO и пробовал разные, ни один из этих двух мне не помог. Что касается общедоступных ресурсов, я не уверен, зачем они мне общедоступны, поскольку они находятся в одной сборке, но я попробовал это, и это ничего не изменило.

Yola 22.04.2024 15:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
98
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам следует сделать .resx общедоступным.

https://i.imgur.com/zrGqYk4.png

и используйте свои ресурсы вот так

[MinLength(10, ErrorMessageResourceName = "LocationAddressFormatError", ErrorMessageResourceType = typeof(DataAnnotationsLocalization)]
public string Address { get; set; }
Ответ принят как подходящий

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

Другие вопросы по теме