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

本文关键字:本地化 字符串 javascript 方法 最简单 | 更新日期: 2023-09-27 18:01:58

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

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

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

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

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

最简单的方法是在控制器的变量中"设置"本地化字符串,然后构建一个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>

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

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>

您可以使用'Global Resources'功能。

使用这个,你可以创建一组"翻译"文件(称为资源文件),其中包含你的web应用程序所需的所有不同的翻译。

下面的文章给出了这样做的一个示例:http://www.developmentalmadness.com/archive/2009/05/20/aspnet-mvc-globalizationlocalization.aspx

那篇文章使用了旧的Web表单视图引擎,但它也可以在Razor视图引擎中工作(@符号代替<%= %>)。

假设你添加了一个名为"MyTranslations"的资源文件,然后将你的翻译添加到这个文件中,你的html现在看起来像下面这样:

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