【问题标题】:Using resource strings in JS file在 JS 文件中使用资源字符串
【发布时间】:2015-03-10 13:02:24
【问题描述】:

我正在尝试通过多语言支持使我的应用程序国际化。我正在使用资源文件方法。到目前为止一切顺利,但是有没有办法在我的 JS 文件中使用资源字符串?

我可以在 JS 文件中访问它们还是不可能?

【问题讨论】:

标签: c# asp.net-mvc


【解决方案1】:

在 JavaScript 中进行本地化的常用方法是通过在主文件之后加载的本地化 JavaScript 文件覆盖字段。

即你的主 app.js 或任何你称之为的对象声明了一个对象:

DateTime = {}
DateTime.days = ["Sunday", "Monday", "Tuesday", ...];
DateTime.dateFormat = "m/d/Y";
DateTime.getToday = function(date) {
    var dayOfWeek = ...;
    return DateTime.days[dayofWeek];
}

然后在您的本地化文件中,我们将其命名为您添加的 locale_de-de.js

DateTime.days = ["Sonntag", "Montag", "Dienstag", ...];
DateTime.dateFormat = "d.m.Y";

这也是大多数 javascript 框架(即 ExtJS、AngularJS)进行本地化的方式。在你的模板中做

@Scripts.Render("~/bundles/app")
@Scripts.Render("~/bundles/locale_de-de")

无需资源字符串和“解析”您的 JavaScript 文件即可将值替换为资源字符串中的值

【讨论】:

    【解决方案2】:

    我发现的最简单的方法是使用 razor 和资源在 _Layout.cshtml 中创建一个 javascript 键值对:

    var resourceData = { 'register_account_pesel_incorrect': '@LanguageResources.register_account_login_incorrect', 'register_account_password_incorrect': '@LanguageResources.register_account_password_incorrect' }
    

    然后在您的 *.js 文件中,您只需像这样使用 resourceData:

    options.messages["isLogin"] = resourceData['register_account_login_incorrect'];
    

    甚至更简单:

    options.messages["isLogin"] = resourceData.register_account_login_incorrect;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-30
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多