在JS文件中使用资源字符串

时间:2015-03-10 13:02:24

标签: c# asp.net-mvc

我正在努力让我的应用程序具有多语言支持。我正在使用资源文件方法。到目前为止一切顺利,但有没有办法在我的JS文件中使用资源字符串?

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

2 个答案:

答案 0 :(得分:0)

在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文件将值替换为资源字符串

中的值

答案 1 :(得分:0)

我发现最简单的方法是使用带有资源的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;