簡體   English   中英

在javascript中本地化字符串的最簡單方法

[英]Easiest way to localize string in javascript

在我的mvc4應用程序中,我具有內部布局視圖javascript函數,該函數只有3個在用戶視圖內部呈現的字符串。

我的mvc4應用使用cookie值本地化為4種語言,並基於該值設置了當前線程。

定位這3個字符串的最簡單解決方案是什么。

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

最簡單的方法是在控制器中的變量中“設置”本地化的字符串,然后從中構建要使用的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>

您可以使用“全局資源”功能。

使用此功能,您可以創建一組“翻譯”文件(稱為資源文件),其中包含Web應用程序所需的所有各種翻譯。

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

該文章使用了較舊的Web Form View Engine,但它也可以在Razor View Engine中使用(@符號代替<%=%>)。

假設您添加了一個名為“ MyTranslations”的資源文件,然后將翻譯添加到了該文件中,那么您的html現在將類似於以下內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM