Язык перевода модели ASP.Net MVC для отображения

Я работаю над многоязычным приложением mvc. У меня есть таблица переводов в базе данных, которую я открываю при запуске приложения и сохраняю в памяти приложения.

Структура базы данных: {TextId, LanguageId, Translation}. TextId назначается каждому элементу пользовательского интерфейса (например, метке, валидаторам, тексту раскрывающегося списка и т. д.). Существует интерфейс администратора для управления текстом перевода.

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

Вот модель (для примера)

public class UserLoginModel
{
    [Required(ErrorMessage="ER001")]
    [Range(6,10,ErrorMessage="ER002")]
    [Display(Description="TX001", Name="TX002")]
    public string LoginId { get; set; }

    [Required(ErrorMessage="ER003"), DataType(DataType.Password)]
    public string Password { get; set; }

    public bool RememberMe { get; set; }
}

Идентификатор языка будет находиться в Session["LanguageId"], а TranslationText находится в переменной приложения.

Модели находятся в отдельном проекте, поэтому прямого доступа к сеансу нет, но я могу использовать DI (не знаю, хорошая ли это практика!)

Вот следующие вещи, которые я рассматривал:

  1. Напишите вспомогательное расширение Html, например @Html.TranslateText("TX001"). Я начал с этого метода, но вскоре понял, что @Html.ValidationMessage принимает только одно сообщение, независимо от нескольких атрибутов валидатора свойства. Я также не могу использовать шаблоны EditorFor.

  2. Используйте javascript для замены текстовых идентификаторов соответствующими сообщениями

  3. Используйте отражение в модели и замените текстовые идентификаторы на атрибуты.

Я склоняюсь к варианту 3, расширяя ModelMetadataProvider, или записывая атрибут фильтра действий, или в шаблоне EditorForModel.

Я очень смущен тем, как действовать дальше. Я все еще в процессе изучения MVC. Следовательно. Я хотел бы спросить экспертов о том, как решить эту проблему наилучшим образом.

Спасибо,


person user3394833    schedule 29.04.2014    source источник
comment
Спасибо за ссылку. Я смог реализовать функциональность соответственно.   -  person user3394833    schedule 01.05.2014