Еще один вопрос по локализации MVC ...
Я пытаюсь локализовать приложение ASP.Net MVC 3, используя локализованные файлы ресурсов для отображения текстов в представлениях, как рекомендуется.
Проблема, как обычно, заключается в попытке локализовать сообщения об ошибках по умолчанию из аннотаций данных.
Я знаю, что вы можете указать файл ресурсов и ключ в каждом атрибуте:
[Required(
ErrorMessageResourceType = typeof(CustomResourceManager),
ErrorMessageResourceName = "ResourceKey")]
public string Username { get; set; }
и даже что лучше и предпочтительнее, вы можете переопределить сообщение по умолчанию, например: Ресурс по умолчанию для аннотаций данных в ASP.NET MVC , поэтому вы можете оставить такие атрибуты, как:
[Required]
public string Username { get; set; }
Это последний подход. Я следил, и он работает, но только тогда, когда DataAnnotation, который вы хотите переопределить, имеет ОДНО и ТОЛЬКО ОДНО сообщение об ошибке, поскольку он всегда ищет ключ ресурса, который называется так же, как атрибут в настраиваемом файле ресурсов (например, «Требуется» требуется запись «RequiredAttribute» в файле ресурсов)
Другие атрибуты, например StringLength, содержат более одного сообщения об ошибке в зависимости от используемых вами дополнительных параметров. Итак, если у вас есть такая модель, как:
public class Person
{
[Required]
[StringLengthLocalizedAttribute(10, MinimumLength = 5)]
[Display(Name = "User name")]
public string UserName { get; set; }
}
, сообщение об ошибке: " Я решаю, какая строка сообщения должна применяться в зависимости от необязательных параметров.
Итак, вот вопрос: знает ли кто-нибудь, где мы можем найти весь список ключей ресурсов, используемых атрибутами DataAnnotation, и посмотреть, сколько различных сообщений об ошибках у нас есть в каждом из них, не тестируя каждый?
Или, что еще лучше, можем ли мы иметь исходный файл RESX для просмотра строковых шаблонов и их локализации с использованием тех же ключей ресурсов? Таким образом, изменение только ErrorMessageResourceType должно работать для всех атрибутов DataAnnotations, и мне не нужно угадывать, где поместить «{1}» или «{2}» в мою локализованную строку.
Спасибо, Кто-нибудь знает, где мы можем найти полный список ключей ресурсов, используемых атрибутами DataAnnotation, и посмотреть, сколько различных сообщений об ошибках у нас в каждом из них, не тестируя каждое из них?
Или, что еще лучше, можем ли мы получить исходный файл RESX, чтобы просмотреть строковые шаблоны и локализовать их с использованием тех же ключей ресурсов? Таким образом, изменение только ErrorMessageResourceType должно работать для всех атрибутов DataAnnotations, и мне не нужно угадывать, где поместить «{1}» или «{2}» в мою локализованную строку.
Спасибо, Кто-нибудь знает, где мы можем найти полный список ключей ресурсов, используемых атрибутами DataAnnotation, и посмотреть, сколько различных сообщений об ошибках у нас в каждом из них, не тестируя каждое из них?
Или, что еще лучше, можем ли мы получить исходный файл RESX, чтобы просмотреть строковые шаблоны и локализовать их с использованием тех же ключей ресурсов? Таким образом, изменение только ErrorMessageResourceType должно работать для всех атрибутов DataAnnotations, и мне не нужно угадывать, где поместить «{1}» или «{2}» в мою локализованную строку.
Спасибо, Серджи