ミドルウェアを作成し、そこに現在の言語を設定する必要があります。
//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')});
私にとってはうまくいかないようです。メッセージはまだ英語です: 'CustomUser'インスタンスは無効です。詳細: 'email'は空白にできません(値:未定義)。 'username'ユーザは既に存在しています(値:\" bob \ ")。しかし、それは強いグローバル化の正しい言語を設定します。たぶんシングルトンではなく、設定が失われ、デフォルト設定の新しいインスタンスが作成されますか? –
@ blacksheep_2011 'var g = SG( 'some-name')'を呼び出すことでインスタンスを作成しない限り、シングルトンです –
大丈夫です。私はここで何が起こっているかを見るためにデバッガでそれを調べます –