有人知道如何从控制器本地化错误消息吗?谁能指点我解决这个问题的链接?
这就是我现在遇到的问题。
var localStrategy = function localStrategy() {
'use strict';
return new LocalStrategy(function (username, password, done) {
OUR_API.login({
'username': username,
'password': password
}).then(function (accessToken) {
return done(null, {
'username': username,
'accessToken': accessToken
});
}, function (err) {
var errMessage;
if(err.message.error.code === 123){
errMessage = 'The email or password you’ve entered is incorrect.';
}
if(err.message.error.code === 125){
errMessage = 'Your account has been locked.';
}
return done(null, false, errMessage);
});
}); };
这是我的粉尘页面中显示信息的一部分。
{?messages}
<ul>
{#messages}
<li>{.}</li>
{/messages}
</ul>
{/messages}
这是代码,它将呈现我的灰尘模板,这是一个passportjs实现:
model.messages = req.flash('error');
res.render('login', model);
正如您所看到的,我有一个硬编码的errMessage,我该如何本地化?我使用的是krakenjs,这段代码是Passportjs的身份验证策略。
关于如何正确实施这一点的任何建议?
答案 0 :(得分:0)
我做了一个解决我的问题的工作。
我将硬编码的消息更改为只返回一个代码,然后在灰尘中,我根据从控制器传递的代码显示了相应的消息。
这是控制器上的代码。
return new LocalStrategy({
passReqToCallback: true
}, function (req, username, password, done) {
OUR_API.login({
username: username,
password: password
}).then(function (accessToken) {
return done(null, {
username: username,
accessToken: accessToken
});
}, function (err) {
var errCode;
if (err && err.message && err.message.error) {
errCode = err.message.error.code.toString();
}
return done(null, false, errCode);
});
});
然后在尘埃页上。
{?errorCode}
{@select key="{errorCode}"}
{@eq value="0001"}{@pre type="content" key="error.message.0001"/}{/eq}
{@eq value="0002"}{@pre type="content" key="error.message.0002"/}{/eq}
{@default}{@pre type="content" key="error.message.default"/}{/default}
{/select}
{/errorCode}
希望这可以帮助任何有同样问题的人。或者任何人有更好的想法?