在javascript中本地化字符串的最简单方法

时间:2014-05-05 13:36:24

标签: c# javascript .net asp.net-mvc-4

在我的mvc4应用程序中我有内部布局视图javascript函数,它只有3个字符串在用户视图中呈现。

我的mvc4应用程序使用cookie值本地化为4种语言,并根据该值设置当前线程。

本地化这3个字符串的最简单的解决方案是什么。

<script type="text/javascript">
   var message = "Please enter value in valid range in order to ...";
   ....
</script>

3 个答案:

答案 0 :(得分:0)

最简单的做法是在控制器中“设置”本地化字符串,在变量中,然后构建一个要使用的JavaScript变量:

<script type="text/javascript">
    userName = "@Model.UserName";
    someSetting = parseInt("@Model.someSetting");
    messages = { // Or even an object
        InvalidRights: "@Html.Raw(ValidationMessages.UserHasInvalidRights)",
        FileRequired: "@Html.Raw(ValidationMessages.FileIsRequired)"
    };
</script>

答案 1 :(得分:0)

您还可以使用模型和属性注释中的标准资源文件来帮助我们。

public class MyModel:BaseModel
{
    [Required(ErrorMessage = "*")]
    [Display(ResourceType = typeof(RES.labels),Name = "lblLanguageCode")]
    public string LanguageCode { get; set; }

    [Required(ErrorMessage = "*")]
    [Display(ResourceType = typeof(RES.labels), Name = "lblCountryCode")]
    public string CountryCode{ get; set; }
...
}

您可以返回模型中的任何内容,我只是展示了一种方法,可以很好地连接模型中的翻译。

<script type="text/javascript">
    test= '@Model.SomeErrorString';
</script>

答案 2 :(得分:-1)

您可以使用全球资源&#39;功能。

使用此功能,您可以创建一组翻译&#39;文件(称为资源文件),包含Web应用程序所需的所有各种翻译。

以下文章为您提供了执行此操作的示例:http://www.developmentalmadness.com/archive/2009/05/20/aspnet-mvc-globalizationlocalization.aspx

该文章使用较旧的Web窗体视图引擎,但它也可以在Razor View Engine中使用(@符号而不是&lt;%=%&gt;)。

我们假设您添加了一个名为“MyTranslations&#”的资源文件,然后将您的翻译添加到此文件中,您的html现在看起来如下所示:

<script type="text/javascript">
  messages = {
      AccessDenied: "@Html.Raw(Resources.MyTranslations.AccessIsDenied)",
      FieldRequired: "@Html.Raw(Resources.MyTranslations.FieldRequired)"
  };
</script>