2017-02-16 4 views
0

ループバックフレームワークは、strong-globalizeモジュールを使用して、API応答の変換を提供します。私はそれを見て、フレームワークにいくつかのデフォルトの翻訳があることを確認します。Strongloop Loopback - エラーメッセージのローカライズ

「Accept-Language」ヘッダーフィールドを使用して、使用する翻訳を決定する必要があります。それはまた、強力なグローバル化されたreadmeにも言及されています。

しかし、翻訳は常に英語です。

これを機能させるにはどうすればよいですか?

答えて

0

ミドルウェアを作成し、そこに現在の言語を設定する必要があります。

//server/middlewares/lang.js 
var negotiator = require('negotiator'); 
var SG = require('strong-globalize'); 

module.exports = function(options) { 
    var allowedLangs = ['en', 'fa']; 
    return function localeHandler(req, res, next) { 
    var lang = new negotiator(req).language(allowedLangs); 
    var g = SG(); 
    g.setLanguage(lang);  
    next(); 
    }; 
}; 

そして

//server/middleware.json 
"inital:after": { 
    "./middlewares/lang": {} 
    }, 

UPDATE

あなたは組み込みの検証エラーメッセージを翻訳したい場合は、クライアントに変換または検証のために翻訳されたメッセージを設定する必要があります。

//custom-user.js 

CustomUser.validations.email = lodash.reject(CustomUser.validations.email, function(val) { 
    return val.validation === 'presence'; 
    }); 

CustomUser.validatesPresenceOf('email', {message: g.t('email-can-not-be-blank')}); 
+0

私にとってはうまくいかないようです。メッセージはまだ英語です: 'CustomUser'インスタンスは無効です。詳細: 'email'は空白にできません(値:未定義)。 'username'ユーザは既に存在しています(値:\" bob \ ")。しかし、それは強いグローバル化の正しい言語を設定します。たぶんシングルトンではなく、設定が失われ、デフォルト設定の新しいインスタンスが作成されますか? –

+0

@ blacksheep_2011 'var g = SG( 'some-name')'を呼び出すことでインスタンスを作成しない限り、シングルトンです –

+0

大丈夫です。私はここで何が起こっているかを見るためにデバッガでそれを調べます –

関連する問題