ASP.Net MVC模型翻译语言以供显示

时间:2014-04-29 21:59:19

标签: asp.net-mvc language-translation

我正在开发支持多语言的mvc应用程序。我在数据库中有一个转换表,我在应用程序启动时将其保存在应用程序内存中。

数据库结构是{TextId,LanguageId,Translation}。 TextId分配给每个UI元素(如标签,验证器,下拉列表文本等)。有一个管理界面来管理翻译文本。

我想知道在UI上显示翻译文本的好方法是什么,以及在哪里进行实际翻译的最佳位置。我不想使用资源管理器,因为数据库正用于其他Asp& Asp.Net webforms应用程序。

这是模型(例如)

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; }
}

语言ID将在Session [“LanguageId”]中,而TranslationText在Application变量中。

模型驻留在单独的项目中,因此没有直接访问会话,但我可以使用DI(不知道这是否是一个好习惯!)

以下是我正在考虑的事项:

  1. 编写Html帮助扩展名,如@ Html.TranslateText(“TX001”)。我从这个方法开始,但很快意识到@Html.ValidationMessage只接受一条消息,而不管属性上有多个验证器属性。我也不能使用EditorFor模板。

  2. 使用javascript将文本ID替换为相应的消息

  3. 在模型上使用反射并替换属性的文本ID。

  4. 我倾向于选项3,通过扩展ModelMetadataProvider,或编写动作过滤器属性,或者在EditorForModel模板中。

    我对如何进行感到非常困惑。我还在学习MVC。因此。我想问专家如何以最佳方式处理这个问题。

    谢谢,

0 个答案:

没有答案