KrakenJS本地化错误消息

时间:2014-04-29 02:08:52

标签: node.js passport.js kraken.js

有人知道如何从控制器本地化错误消息吗?谁能指点我解决这个问题的链接?

这就是我现在遇到的问题。

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的身份验证策略。

关于如何正确实施这一点的任何建议?

1 个答案:

答案 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}

希望这可以帮助任何有同样问题的人。或者任何人有更好的想法?